分页内存管理
Posted sean-zhao
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分页内存管理相关的知识,希望对你有一定的参考价值。
以32bit cpu 32bit system 为例
只要记住一点
无论几级页表,对于一个表项来说,占据4个字节,存储着的是下一级页表物理页对应的基地址。
基地址 这三个字非常关键。
0级页表存的是对应1级的基地址
1对应2
2对应3
依次类推
然后,本级页表,简单理解就是比如定义一个unsigned int map_1[4096] 数组,在虚拟地址里取对应的页表项目偏移值,比如是个1024,。实际就是取的此数组map_1[1024]的值。
map_1[1024]的值存的是什么呢,存的就是下一级页表存的地址的值比如是0x11223344
定位到0x11223344地址开始,又存储了一个数组,比如叫unsigned int map_2[4096],同样,取虚拟地址对应本页表的偏移量,比如是512,然后得到map_2[512]的值。比如该值的意义,已经是最后物理页的地址。比如是0x22334455
然后定位0x22334455,此页大小为4k bytes。取虚拟地址的低12位值。得到一个偏移量,比如是256。
最后实际的物理地址就是0x22334455 + 256。
以上是关于分页内存管理的主要内容,如果未能解决你的问题,请参考以下文章