1

我读到了内存的页面结构,但无法得到一些观点:

  • 页表:据我了解,该进程(如 Intel i5)具有集成在其晶体中的页表和 TLB,不是吗?但是这个表不包含虚拟页面的地址,所以操作系统必须在操作内存中还有一个页表。所以?

  • 倒排表:我知道它有页表,但该表包含内存实际块的地址。而我只得到了一个。该表位于进程或操作系统中的何处在操作内存中提供它。哈希函数有什么用? 从图片来看。PID - 进程 ID(它是干什么用的),p - 页号(物理页还是虚拟页?如果是物理页,这个表是干什么用的?)。
    倒置页表

请不要将我推荐给 Wiki 等。我已经阅读了它,但我无法获得。有人可以更清楚地解释吗?

4

1 回答 1

2

出于学习目的,您应该从普通的页表开始。开始时忽略倒置页表,因为它们在极少数处理器中使用过。

最简单的情况是单级页表。在这种情况下,逻辑地址由逻辑页号和该页内的偏移量组成。要将逻辑页转换为物理页框,您需要获取页码,并将其用作页表的索引。然后页表指定页面映射到的物理页框(如果有的话)。

下一个复杂级别是多级页表。在这种情况下,逻辑页号被分解为位字段,其中每个字段代表表中的一个级别。最高有效位字段在顶级页表的索引中。相应的页表条目引用另一个页表。下一个最高有效位字段是该页表的索引。该过程重复进行,直到您到达条目指定物理页框的最后一个页表级别。

请注意,在该系统中,页表从逻辑地址映射到物理页框。物理页框和逻辑地址之间没有直接的映射关系。

对于倒置页表,您必须重新学习所有内容。有一个页表,每个物理页框都有一个条目。页表指示映射到它的相应虚拟页(如果有)。

在倒排页表系统中,处理器可以直接从物理页框映射到逻辑页。为了从逻辑页框映射到物理页,处理器必须扫描页表(严重依赖缓存)。

正常页表的机制在系统之间几乎相同(主要区别在于级别数)。然而,在使用倒排页表的系统中没有这种相似性。

如果使用反向页表的系统使用单个系统范围的表(而不是每个进程一个表),则表中必须有一个 PID 字段来解决具有映射到不同物理页帧的相同逻辑页的进程的歧义。

在反向页表中查找逻辑页/PID 组合的一种方法是使用单独的哈希表。那就是你图中的PID。您的“p”似乎是逻辑页码。

要在现实世界中四处走动,您只需要知道倒排页表的存在及其基本操作即可。

于 2017-05-13T23:09:04.680 回答