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

 

 

 

posted @ 2020-10-18 14:59  PYozo_free  阅读(92)  评论(0编辑  收藏  举报