【发布时间】:2020-01-28 12:05:04
【问题描述】:
首先:这个问题是关于 IA-32 (x86) 架构的。
我有一个关于旧式(非 PSE、非 PAE)分页的问题。在遗留分页中,我们有一个包含 1024 个条目的页面目录,每个条目都指向一个页表。每个页表包含 1024 个条目(这些是页),每个条目指向一个 4096 字节对齐的物理地址。
同时,每个单独的页目录条目和页表条目都有一些标志,并且它们都有一个'U'标志(位#2):如果设置了这个标志,那么两个用户都可以访问该页面( ring3)和主管(ring0);但是,如果未设置此标志,则只有主管(ring0)可以访问它。此标志通常称为“用户/主管位”。
问题:如果我想在同一个页表中同时拥有 ring0 和 ring3 页,我应该怎么做?我可以在页表中设置相应权限的条目,但是对应的页目录条目应该指定什么权限呢?
例如:我设置了第一个页表(虚拟地址范围:0x00000000 - 0x003FFFFF)来映射物理地址范围 0x00000000 - 0x003FFFFF(这包括 4 兆字节)。第一个兆字节(0x00000000 - 0x000FFFFF)应该只能由主管(ring0)访问,因此,“用户/主管位”被清除。用户 (ring3) 和主管 (ring0) 都应该可以访问以下三兆字节 (0x00100000 - 0x003FFFFF),因此设置了“用户/主管位”。
此页表由第一个页目录条目指向。但是该页面目录条目的“用户/主管位”应该被清除(仅主管)或设置(用户和主管)?有什么区别?
【问题讨论】:
标签: memory x86 intel paging osdev