首先,这个问题是关于IA-32 (x86)体系结构的.
我有一个关于遗留(非PSE,非PAE)分页的问题。在遗留分页中,我们有一个有1024个条目的页面目录,每个条目指向一个页面表。每个页表包含1024个条目(这些是页面),每个条目指向一个4096字节对齐的物理地址。
同时,每个页面目录条目和页表条目都有一些标志,它们都有一个'U‘标志(位#2):如果设置了此标志,则该页面可以由用户(ring3)和监控器(ring0)访问;但是,如果没有设置此标志,则只有主管(Ring0)才能访问它。此标志通常称为“用户/监控程序位”。
问题:如果我想在同一个页面表中同时拥有ring0和ring3页面,我应该做什么?我可以用适当的权限在页面表中设置条目,但是对应的页面目录条目应该指定什么特权呢?
例如:我设置了第一页表(虚拟地址范围: 0x00000000 - 0x003FFFFF)来映射物理地址范围0x00000000 - 0x003FFFFF (这包括4兆字节)。第一个兆字节(0x00000-0x000FFFF)只能由监控器(ring0)访问,因此清除“用户/监控程序位”。以下三兆字节(0x00100000 - 0x003FFFFF)应由用户(ring3)和监督者(ring0)访问,因此设置“用户/监控器位”。
此页表由第一页目录项指向。但是,应该清除该页面目录条目的" user /Supervisor位“(只有监督者)或设置(用户和主管)?有什么关系?
发布于 2020-01-28 13:21:55
CPU将在Page条目(PDE)或Page条目(PTE)中使用最严格的特权。如果一个PDE拥有Supervisor特权,那么下面的所有页面表都将拥有Supervisor特权,不管PTEs使用什么。如果PDE具有用户权限级别,那么PTE的保护级别将决定最终的权限级别。
这种行为是在Intel 64和IA-32架构软件开发人员手册第3A卷中定义的。
4.11.4结合保护两个级别的页面表 对于任何一个页面,其页面目录条目(第一级页面表)的保护属性可能与其页面表条目(第二级页表)的保护属性不同。处理器检查页目录和页表条目中的页的保护。表4-3显示了当WP标志清晰时,保护属性的可能组合所提供的保护。
表4-3如下:

对问题的回答是:如果您希望在特定的PDE下混合具有User和Supervisor权限的页面,那么将PDE设置为User权限和相应的PTEs (用户或主管)。
https://stackoverflow.com/questions/59948388
复制相似问题