分层页表与倒排表
Hierarchical page tables vs. Inverted tables
我看了内存的一个page结构,有些点得不到:
页面table:据我了解,该进程(如 Intel i5)具有页面 table 和集成在其 crystal 中的 TLB,它不是吨?但是这个 table 不包含虚拟页面的地址,所以 OS 必须在操作内存中还有一个页面 table 。那么?
Inverted tables: 我知道它有页面 table 但是这个 table 包含内存的真实块的地址。而我仅此而已。这个 table 位于进程的哪个位置或 OS 在操作内存中提供它。哈希函数有什么用?
从图片上看。 PID - 进程ID(What's it for),p - 页码(物理页还是虚拟页?如果是物理页,这个是什么table为了?).
请不要向我介绍 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 的存在及其基本操作即可。
我看了内存的一个page结构,有些点得不到:
页面table:据我了解,该进程(如 Intel i5)具有页面 table 和集成在其 crystal 中的 TLB,它不是吨?但是这个 table 不包含虚拟页面的地址,所以 OS 必须在操作内存中还有一个页面 table 。那么?
Inverted tables: 我知道它有页面 table 但是这个 table 包含内存的真实块的地址。而我仅此而已。这个 table 位于进程的哪个位置或 OS 在操作内存中提供它。哈希函数有什么用?
从图片上看。 PID - 进程ID(What's it for),p - 页码(物理页还是虚拟页?如果是物理页,这个是什么table为了?).
请不要向我介绍 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 的存在及其基本操作即可。