分页机制

  • 关键寄存器,cr0 --- enable 分页机制,cr3 --- 指向PDE

    • cr0最高位设为1,表示开启分页机制

    • cr3指向PDE首地址

    • PDE本身是一个4byte*1024的结构,每个item指向一个PTE

    • 每个PTE有1024个表项,每个表项指向一个4k memory page

  • PDE / PTE 数据结构

             分页机制_第1张图片分页机制_第2张图片

    • P ---- 表示所指向的Page或者Page Table是否在内存中,P = 1表示在内存中

    • R/W ---- 指定一个页或者一组也只读还是读写,最后的读写权限要和cr0 WP位以及U/S位共同决定

    • U/S --- 一个或者一组页是user mode还是supervisor mode,0表示supervisor mode ( CPL 0, 1, 2称为supervisor mode 代码, 3为user mode代码 )。如果cr0.WP=0, 即使r/w=0,supervisor mode的代码还是可以写r/w = 0的用户mode page

    • PCD = 0表示page可以被缓存

    • A /D 都是cpu在第一次访问/写入page的时候被设置为1, 清除要程序代码来执行

    • G=1 ,并且cr4.PGE=1,那么对应的PDE条目或者PTE条目不会在CR3 reload的时候,被自动设置成无效

 

 

Appendix I, X86内存分布

Upper Mem ( > 1 M)

我们的日子中将PDE / PTE放在0x200000h开始的地方,在第一个slot内,guaranteed free for use

分页机制_第3张图片

Appendix II, 线性地址到物理地址的映射

分页机制_第4张图片


你可能感兴趣的:(分页机制)