如何正确设置页面目录条目中的特权?

问题描述 投票:1回答:1

首先:这个问题与IA-32(x86)架构有关。

我有一个关于旧版(非PSE,非PAE)分页的问题。在旧式分页中,我们有一个包含1024个条目的页面目录,每个条目都指向一个页面表。每个页表包含1024个条目(这些页),每个条目指向4096字节对齐的物理地址。

同时,每个页面目录条目和页面表条目都包含一些标志,并且它们都具有'U'标志(位#2):如果设置了此标志,则两个用户都可以访问该页面(ring3 )和主管(ring0);如果未设置此标志,则只有超级用户(ring0)可以访问它。此标志通常称为“用户/管理员位”。

问题:如果要在同一页表中同时包含ring0和ring3页面,该怎么办?我可以使用适当的特权来设置页面表中的条目,但是相应的页面目录条目应指定什么特权?

例如:我设置了第一页表(虚拟地址范围:0x00000000-0x003FFFFF)以映射物理地址范围0x00000000-0x003FFFFF(覆盖4 MB)。第一个兆字节(0x00000000-0x000FFFFF)应该只能由管理员(ring0)访问,因此,将清除“用户/管理员位”。用户(ring3)和管理员(ring0)都应该可以访问以下三个兆字节(0x00100000-0x003FFFFF),因此,将“用户/管理员位”置位。

此页表由第一页目录条目指向。但是应该清除(仅主管)或设置(用户和主管)该页面目录条目的“用户/主管位”吗?有什么区别?

memory x86 intel paging osdev
1个回答
0
投票

CPU将在页面目录条目(PDE)或页面表条目(PTE)中使用最严格的特权。如果PDE具有Supervisor特权,则无论使用什么单个PTE,它下面的所有页表都将具有Supervisor特权。如果PDE具有用户特权级别,则PTE的保护级别将确定最终特权级别。

此行为在Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 3A中定义。

4.11.4页表的两个级别的组合保护

对于任何一个页面,其页面目录条目的保护属性(第一级页表)可能与其页表项(第二页页表)不同。处理器检查其页面目录和页面中的页面保护。页表条目。表4-3显示了当WP标志清除时由保护属性的可能组合提供的保护。

表4-3显示为:

enter image description here

如果要在特定PDE下同时具有User和Supervisor特权,则将PDE设置为User特权,并相应地将PTE(User或Supervisor)设置为PTE。

© www.soinside.com 2019 - 2024. All rights reserved.