10-10-12分页
属性含义
- P:有效位。0 表示当前表项无效。
- R/W: 0 表示只读。1表示可读可写。
- U/S::0 表示3特权级程序可访问,1表示只能0、1、2特权级可访问。
- PWT、PCD、请看后面的填坑篇
- A::0 表示该页未被访问,1表示已被访问。
- D::脏位。0表示该页未写过,1表示该页被写过。
- PS::只存在于页目录。0表示这是4KB页,指向一个页表。1表示这是4MB大页,直接指向物理页。
- PAT:这个不管
- G:如果G位为1刷新TLB时将不会刷新PDE/PTE的G位为1的页,G=1切换进程该PTE扔然有效(这里学完TLB才能明白)
- 有效:由软件控制的位,此位仅使用于多处理器系统,指明了可读写或只读
1:)0为什么不能读写?
打开windbg,随便查看一个进程的cr4
该地址指向的是PDT表,且由于是0地址所以偏移是0,查看
可以看到是168bd000存的是PTT表
到这里可以发现PTE表是不存在物理页的
2:)将0地址设为可读
首先咱们要给0地址挂个物理页,否则你怎么都无法访问到,因为他是无效的
查看这个程序的PDT
再查看PTE
发现没挂物理页,我这里随便挂了一个物理页上去(挂的PTD表)
在通过代码打印出来
ok,完成
3:)多个PTE映射1个物理页
这个其实跟上面的一样,改下物理页就好了,然后在打印一下就ok