22-物理页属性-U/S-PS-A-D

上一篇介绍了物理页的 P 属性和 RW 属性。本篇介绍 U/S、PS、A、D。

1. PDE、PTE 结构

  • PDE 结构
|<------ 31~12------>|<------ 11~0 --------->| 比特
                     |b a 9 8 7 6 5 4 3 2 1 0| 
|--------------------|-|-|-|-|-|-|-|-|-|-|-|-| 占位
|<-------index------>| AVL |G|P|0|A|P|P|U|R|P| 属性
                             |S|   |C|W|/|/|
                                   |D|T|S|W|
  • PTE 结构
|<------ 31~12------>|<------ 11~0 --------->| 比特
                     |b a 9 8 7 6 5 4 3 2 1 0|
|--------------------|-|-|-|-|-|-|-|-|-|-|-|-| 占位
|<-------index------>| AVL |G|P|D|A|P|P|U|R|P| 属性
                             |A|   |C|W|/|/|
                             |T|   |D|T|S|W|

2. U/S

当年,我们为了读写高 2G 内存的时候,非常辛苦,又是调用门又是中断门的,把程序的执行权限提高到了 0 环才能读取。记得在写《跨段提权与调用门》 的时候,我只是说过,高 2G 内存是被页机制所保护的,要想读取高 2G 内存,必须进行提权。可是当时我并未说明,为什么高 2G 只能被 0 环程序所访问,如今,这个答案终于可以在这个篇章被揭晓——PDE和PTE的U/S属性位。

U/S 属性位,当该位为 1 时,表示用户位,即 U 位。该位为 0 时,表示系统位。什么意思?通俗的讲,当该位为 1 时,物理页可以被0,1,2,3环的程序访问,当该位为 0 时,物理页只能被0,1, 2环的程序访问。

为什么不能读高 2G 的主要原因就是这里,因为高 2G 的物理页的 U/S 位都是 0. 不妨我们分析一下线性地址8003f500,经过这么多次实验,你肯定也知道这是 IDT 表的首地址了。

2.1 分析 8003f500 对应的物理页 U/S 属性

8003f500按 10-10-12 拆成 3 段后为 200-03f-500,我们使用 !process 0 0随便寻找一个页目录基址(注意这里,也许你有大收获)。见图1,最终发现,PDE 和 PTE中的 U/S属性位均为0.

这里写图片描述

图1 PDE和PTE中的 U/S 位都为 0

3. PS 位

PS,即 pagesize 的缩写,该属性只在 PDE 中才有,PTE对应的位置叫 PAT。

当 PS = 0 时,表明 PDE 指向一个 4KB 页表。这种线性地址对应的物理页,通常称之为小页面。
当 PS = 1 时,表明 PDE 指向一个 4MB 大小的普通物理页,而不是 PTT。这种页称为大页面。

在 Windows 中,高 2G 有少量的线性地址,指向的是大页面。没错,大写页面是可以并存的。不信,去高 2G 线性地址去搜搜?

4. A 位

A 位,access 位,该位被置 1,说明对应的物理页被访问过。

5. D 位

D 位,dirty 位,该位置 1, 说明对应的物理页被写过。如果你以前学过操作系统的话,另外还学过页面置换算法的话,相信这个位你应该知道怎么用。

6. 总结

至此,常用的页属性已经介绍完。“什么,你逗我呢?不是还有 G、PWT、PCD、PAT吗?”

抱歉,以我们目前的知识,还不适合讲这些。机会成熟时,自然会讲到。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值