您的位置:首页 > 运维架构 > Linux

linux下的存储管理----原创 转载请通知我!!!

2005-04-04 16:45 483 查看
Linux内核采用页式存储管理,采用三次映射机制实现从线性地址到物理地址的映射。采用这种方式的主要原因是考虑到对不同CPU的实现,方便以后的扩展。在i386平台中,采用的是段页式的方法对存储空间进行管理。具体对于这种结构,Linux内核通过在系统配置过程中的选择,编译的时候选择pgtable-2level.h①。这个文件主要用于分配PGD、PMD和PT的范围。在这个文件中,将PGD的起始位置和PMD的起始位置都设置成了bit22,也就是说PMD位段的长度就为0。这样就把Linux逻辑上的三层映射模型落实到i386结构物理上的二层映射。

i386的32位的线性地址将内存物理空间映射到4G的虚拟空间。其中从0XC0000000到0XFFFFFFFF的1G空间为所用进程所共享的内核空间,每个进程都有自己的3G用户空间。

具体的映射过程为:
⑴从CR3寄存器中取得当前页面目录的地址,以dir作为下标,找到指向相应页面表的指针。
⑵以page为下标结合当前页面表的指针,找到相应的页表项。
⑶把这个页表项加上线性地址的最低12位,就得到了最终的物理内存地址。

具体的映射过程为:
⑴从CR3寄存器中取得当前页面目录的地址,以dir作为下标,找到指向相应页面表的指针。
⑵以page为下标结合当前页面表的指针,找到相应的页表项。
⑶把这个页表项加上线性地址的最低12位,就得到了最终的物理内存地址。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: