21-物理页属性-P-RW

熟练掌握了线性地址到物理地址的转换后,我们也知道PDE和PTE的结构。当时只知道PDE和PTE中保存了物理页的属性。

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. 物理页属性

可是最后物理页的属性最后是以 PDE 为准,还是以 PTE 中的属性为准?一个物理页索引号的确定是需要 PDE 和 PTE 共同决定的,那么物理页的属性自然也需要 PDE 和 PTE 两者的属性共同决定才行。

物理页属性 = PDE 中的属性 & PTE 中的属性

写成 C 语言的方式,就应该是:

int physical_page_attribute = (0x00000fff & pde) & (0x00000fff & pte);

3. P 位

P 位在上一篇的读写空指针时提到过。这个位很简单,P=1 表示该页有效,P=0 则无效。

4. RW 位

RW = 1时,表示该页可写。
RW = 0时,表示该页只读。

如果你使用过常量区的变量,你可能会知道,什么样的页是只读的。比如:

char *str = "Hello world!";

如果要你修改 str 的内容,你能做到吗?

5. 总结

记住物理页的属性是如何计算的。另外,掌握 P 位和 RW 位。

自己独立完成 RW 的实验(修改常量区内容)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值