页面大小在操作系统中存储在哪里?

时间:2019-01-27 05:34:39

标签: operating-system

我知道页面大小在某些操作系统中是固定的,例如在i386中pg大小为4K。但是,内存管理器如何知道页面的大小?它是否将其存储在内存中,以便MMU在转换地址时可以读取它?

2 个答案:

答案 0 :(得分:1)

页面大小直接影响处理器体系结构。它定义了硬件如何为虚拟物理转换解释页面地址。

地址的页面内部分(通常称为偏移量或位移)不会转换,并且会原样发送到高速缓存,而高位(页面虚拟地址)由TLB转换,并修改页面大小(和偏移量) )将需要更改数据路径宽度。根据此偏移量的大小以及L1高速缓存的特征(大小和关联性),高速缓存可以使用或不使用虚拟索引,这可能会对性能产生直接影响,并可能意味着需要重新设计。 虚拟地址的大小还决定了TLB未命中(页面遍历)后组织和访问页表的方式。 MMU和高速缓存是处理器设计中至关重要的部分,会对性能产生直接影响,因此需要对其进行优化以使其通常不具有灵活性。

因此,更改页面大小需要对处理器体系结构进行重大更改,并且页面大小通常是恒定的或具有有限数量的值。近期的Pentium可以具有常规4K或巨大的4G页面。较旧的arm版本(v4和v5)添加了允许将页面大小除以4的子页面。在Arm v8上,您还可以具有64kB页面。但是除了该处理器通常是为固定页面大小设计的以外, 并且操作系统必须适应处理器页面。

答案 1 :(得分:0)

我知道处理器定义页面大小的三种方式:

  1. 页面大小是恒定的,永远不会改变。

  2. 页面大小相同,但可以配置。在这种情况下,页面大小在系统寄存器中设置。通常,页面大小必须为特定值,因此它是位设置而不是数字值。这似乎是您要问的。读者可以理解的是,英特尔芯片上的摘要版本是将CR4寄存器中的某个位置设置在4KB和4 MB页面之间切换。

  3. 有些系统的页面大小可以变化。在这种情况下,页面大小通常在页面表中设置。