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

Operating system 页面大小在操作系统中存储在哪里?,operating-system,Operating System,我知道页面大小在某些操作系统中是固定的,比如i386中的pg大小是4K。然而,内存管理器如何知道页面的大小?它是否将其存储在内存的某个位置,以便MMU在转换地址时可以读取它?页面大小对处理器体系结构有直接影响。它定义了硬件如何解释页面地址以进行虚拟物理转换 在页中,地址的一部分(通常称为偏移量或置换量)不会被转换,而是不变地发送到缓存,而高位(页虚拟地址)由TLB转换,修改页大小(和偏移量)需要更改数据路径宽度。根据此偏移量的大小和一级缓存特性(大小和关联性),缓存可以使用或不使用虚拟索引,这可

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

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

在页中,地址的一部分(通常称为偏移量或置换量)不会被转换,而是不变地发送到缓存,而高位(页虚拟地址)由TLB转换,修改页大小(和偏移量)需要更改数据路径宽度。根据此偏移量的大小和一级缓存特性(大小和关联性),缓存可以使用或不使用虚拟索引,这可能会对性能产生直接影响,并意味着需要重新设计。 虚拟地址大小还决定TLB未命中(页面漫游)后页面表的组织和访问方式。MMU和缓存是处理器设计中的一个非常关键的部分,对性能有直接影响,需要对它们进行优化,以排除灵活性

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

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

  • 页面大小是不变的,永远不会改变

  • 页面大小相同,但可配置。在这种情况下,页面大小在系统寄存器中设置。通常,页面大小必须是特定的值,因此它是一个位设置,而不是一个数值。这似乎就是你要问的。英特尔芯片上的readers digest版本是在CR4寄存器中设置一个位在4KB和4MB页面之间切换

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


  • MMU是i386的一部分,可能不是操作系统告诉MMU页面大小,而是操作系统必须使用硬件支持的页面大小:谢谢。那个么,处理器如何知道它的页面大小呢?在某些“大页面”模式下,页面大小更大。所以MMU和TLB必须知道变量“页面大小”存储在哪里?我主要想知道它存储在哪里。处理器中有一个内部寄存器,它是在启动时设置的,用于描述它。引导是在物理内存上完成的,确实需要一个MMU。