页表项详解

Author Avatar
Garry Xu 10月 26, 2017

以下介绍基于IA-32e (x86_64),参考 “Intel® 64 and IA-32 Architectures Software Developer’s Manual”

页表是实现地址翻译的重要结构,其中,Page Table Entry (PTE)存储了页帧的物理地址和控制标记,了解PTE的详细结构对理解访存过程中的权限控制、缺页处理等机制都有着重要的意义。

PTE的内部结构如下图所示:

关键控制位的详细解释

比特位 简称 说明
0 P 表示页帧是否存在;如果P值为0,访问该页帧将触发 Page Fault
1 R/W 表示页帧的读写权限;如果值为0,表示页帧不能被修改(R/W生效,依赖CR0 Write Protect比特置位
2 U/S 表示页帧对用户态和内核态访问的限制;如果值为0, 不允许用户态访问
3 PWT PAT,PCD和PWT位组成Page Attribute Table的索引,表示页帧的缓存模式
4 PCD 见PWT说明
5 A 表示PTE是否被访问过;若处理器在地址翻译的过程中使用了该PTE,则置位该PTE的A位
6 D 表示页帧被修改过;若处理器发现对线性地址的写操作,置位对应PTE的D位
7 PAT 见PWT说明
8 G 表示页帧为全局页,TLB中该页帧对应的地址转换,不会在进程切换时清空
  • A位和D位只能由软件清除