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位,就得到了最终的物理内存地址。
i386的32位的线性地址将内存物理空间映射到4G的虚拟空间。其中从0XC0000000到0XFFFFFFFF的1G空间为所用进程所共享的内核空间,每个进程都有自己的3G用户空间。
具体的映射过程为:
⑴从CR3寄存器中取得当前页面目录的地址,以dir作为下标,找到指向相应页面表的指针。
⑵以page为下标结合当前页面表的指针,找到相应的页表项。
⑶把这个页表项加上线性地址的最低12位,就得到了最终的物理内存地址。
具体的映射过程为:
⑴从CR3寄存器中取得当前页面目录的地址,以dir作为下标,找到指向相应页面表的指针。
⑵以page为下标结合当前页面表的指针,找到相应的页表项。
⑶把这个页表项加上线性地址的最低12位,就得到了最终的物理内存地址。
相关文章推荐
- [转载]Linux磁盘存储区管理原理与技巧
- Linux中数据结构的分析——原创 转载请通知
- [转载]Linux磁盘存储区管理原理与技巧 tips
- 【原创】《Linux高级程序设计》(杨宗德著)--- Linux进程存储管理
- 【原创】《Linux高级程序设计》(杨宗德著)--- Linux进程存储管理
- linux C 进程内部存储管理
- linux通过shelll编程实现自动化远程唤醒(小陈原创作品,转载请尊重作者)
- (转载)如何借助KeePassX在Linux上管理多个密码
- 转载:Linux下启动和关闭Weblogic(管理服务器+被管服务器)
- 【原创】《Linux高级程序设计》杨宗德著 - 进程管理与程序开发 - 管道 分类: Linux --- 应用程序设计 2014-11-05 11:18 75人阅读 评论(0) 收藏
- 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
- linux中的存储设备的管理
- [转载]Linux系统对IO内存和IO端口的管理
- linux系统日常管理【转载】
- [Linux 存储管理] LVM结构
- Linux 内核源码分析 chap 2 存储管理 (5)
- 浅谈Linux磁盘存储管理续【逻辑卷管理(LVM)】
- Linux 内核源代码情景分析 chap 2 存储管理 (四)
- Linux 存储管理2——内存管理
- Linux 存储管理3——地址映射全过程