zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用grpc C++功能
    华为任正非访谈
    苹果产品
    异步编程
    基于磁盘存储
    spring 应用
    java简单框架设计
    消息队列架构
    03 java 基础:注释 关键字 标识符 JShell
    02 java 基础:java 文件名与类名关系 CLASSPATH
  • 原文地址:https://www.cnblogs.com/pppyyyzzz/p/13835230.html
Copyright © 2011-2022 走看看