译 | 6.4 页面级保护

i> From: Intel 80386 Reference Manual - 6.4 Page-Level Protection

与页面有关的保护分为两种:

  • 可寻址的区域限制
  • 类型检查

6.4.1 页表条目所有的保护参数

Page-Table Entries Hold Protection Parameters

图6-10突出显示了控制页面访问的PDE和PTE的字段。

6.4.1.1 可寻址的区域限制

Restricting Addressable Domain

通过将每个页面分配到以下两个级别之一来实现页面权限的概念:

管理员级别 (Supervisor level )(U / S = 0) - 用于操作系统和其他系统的软件及相关数据。

用户级别(U / S = 1) - 用于应用程序和数据。

当前级别(U或S)与CPL相关。 如果 CPL0, 12 ,则处理器在管理员级别执行。 如果 CPL3 ,则处理器在用户级别执行。

当处理器在管理员级别执行时,所有页面都是可寻址的,但是,当处理器在用户级别执行时,只有属于用户级别的页面是可寻址的。

6.4.1.2 类型检查

Type Checking

页面寻址级别定义了两种类型:

  • 只读 ( R/W = 0)
  • 读写 ( R/W = 1)

当处理器在管理员级别执行时,所有页面都是可读写的。 当处理器在用户级执行时,只有属于用户级别并标记为读/写访问的页面是可写的; 属于主管级别的页面对于用户级别的操作既不可读也不可写入。

6.4.2 结合两级页表保护

Combining Protection of Both Levels of Page Tables

页面目录条目的保护属性可能与其页表条目的保护属性不同。 80386通过检查目录和页表中的保护属性来计算页面的有效保护属性。 表6-5显示了可能的保护属性组合提供的有效保护。

Table 6-5. Combining Directory and Page Protection

Page Directory Entry     Page Table Entry      Combined Protection
U/S          R/W         U/S      R/W          U/S         R/W

S-0          R-0         S-0      R-0           S           x
S-0          R-0         S-0      W-1           S           x
S-0          R-0         U-1      R-0           S           x
S-0          R-0         U-1      W-1           S           x
S-0          W-1         S-0      R-0           S           x
S-0          W-1         S-0      W-1           S           x
S-0          W-1         U-1      R-0           S           x
S-0          W-1         U-1      W-1           S           x
U-1          R-0         S-0      R-0           S           x
U-1          R-0         S-0      W-1           S           x
U-1          R-0         U-1      R-0           U           R
U-1          R-0         U-1      W-1           U           R
U-1          W-1         S-0      R-0           S           x
U-1          W-1         S-0      W-1           S           x
U-1          W-1         U-1      R-0           U           R
U-1          W-1         U-1      W-1           U           W

6.4.3 重写页面保护

Overrides to Page Protection

检查某些访问,就好像它们是特权级别0引用一样,即使CPL = 3:

  • LDT, GDT, TSS, IDT 参考.
  • 循环访问(ring-crossing) CALL/INT 期间访问内部堆栈.