分层页表与倒排表

Hierarchical page tables vs. Inverted tables

我看了内存的一个page结构,有些点得不到:

请不要向我介绍 Wiki 等。我已经阅读过但看不懂。有人可以解释得更清楚吗?

出于学习目的,您应该从普通页面 tables 开始。忽略反向页面 tables 开始,因为它们是在极少数处理器中使用的古怪东西。

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

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

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

对于倒页 tables 你必须重新学习一切。有一个页面 table,每个物理页面框架都有一个条目。页面 table 表示映射到它的相应虚拟页面(如果有)。

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

正常页面 table 的机制在系统之间几乎相同(主要区别在于级别数)。但是,在使用倒排页tables.

的系统中没有这种相似性

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

在反向页面 table 中查找逻辑 page/PID 组合的一种方法是使用单独的散列 table。那是你图中的PID。您 "p" 似乎是合乎逻辑的页码。

要在现实世界中四处走动,你只需要知道反向页面 table 的存在及其基本操作即可。