CPU访问内存方式
CPU是这样寻址的:CPU任何时候,一切时候,发出的地址都是虚拟地址,通过MMU将虚拟地址转换成物理地址发送到cpu芯片引脚上。
虚拟地址转换成物理地址的过程
cr3:页目录基地址寄存器 CR3含有存放页目录表页面的物理地址(注意,是物理地址!!!)
以下为32位系统二级页表:
1.Directory(22bit-31bit)作为偏移在页目录中查找下一级页表基址。
2.Talbe(12-21bit)作为偏移在下一级也表中查找页基址。
3.OFFSET(0-11bit)作为偏移,在页中访问最终要访问的物理地址。
页目录每行记录是32bit,以下为一级目录的例子:
为什么采用多级页表?
为了节省存储页表的空间。
具体来说,32位系统下:
1.按1级页表,20+12 管理4GB地址,页目录需要占4M物理内存(2的20次方4)。说明:20是32-12(2的12次方是4KB)。每个目录项占4字节,所以乘以4。
2.按2级页表。10+10+12。部分不需要的页表可以不分配。
第一级:页目录占4KB内存。(2的10次方4)
第二级:一个页表占4KB内存。可索引 4M(10244K)内存。
即:1个应用程序需要占100M内存。使用25个2级页表加1个一级页目录,104K(254+4)的页表大小就够了,不需要4M。