在阅读有关需求分页的文章时,我可以在几个源(例如http://www.expertsmind.com/questions/name-the-hardware-to-support-demand-paging-30176232.aspx)中看到,我们需要硬件支持页面表中每个条目的有效/无效位。然而,我无法理解硬件支持会是什么样子。根据我的理解,
总之,我的问题是-对有效/无效位的硬件支持是什么样子的?如果它可以在不同的实现/体系结构中有所不同,您能分享任何特定实现的细节吗?
发布于 2021-10-17 03:24:42
中。
这是可能的,对于一些罕见的CPU来说也是如此(当它们得到“TLB/TransformingLovel-居边缓冲区缺失”时,只会要求操作系统进行翻译)。
但是,对于大多数CPU来说,页面表是CPU本身直接使用的数据结构,而软件(内核)必须以CPU理解的格式提供数据。在这些情况下,CPU所需的页表输入格式通常具有用于各种用途的多个位,包括“有效/无效”(和“访问/未访问”,以及读/写/可执行权限,以及用户/主管权限,和.)。
页表条目(当有效时)不需要存储整个物理地址,因为页面的地址必须与页的开始对齐(因此最低位可以假定为零而不是存储)。例如,如果页面是4 KiB ( 12位用于“页面偏移”),物理地址是32位;那么页面表条目中的物理地址只需要20位(物理地址的最低12位可以“假定为零”),对于32位页表条目,这12位可以用于其他事情(“有效/无效”,.)。
也有一些“不那么常规”的格式,其中一些最高位被重新定位为其他事情。例如,您可能有64位的页表条目,其中最高的4位用于其他事物,而中间的48位用于物理地址(没有“假定的零”低位),然后最低的12位用于其他事情。
总之,我的问题是:对有效/无效位的硬件支持是什么样子的?
因为对于不同类型的CPU,它是不同的;查找页表条目格式/s的最佳位置是CPU制造商的手册。您可以在图中找到一个常见的示例(32位80x86):https://wiki.osdev.org/Paging#Page_Table。
注意,Intel称它为“存在/不存在”标志(标签为P),它是页面表条目中的最低位。
https://stackoverflow.com/questions/69599586
复制相似问题