Linux 内存管理学习笔记

作者:简简单单 2011-11-23

Linux内存采用保护模式的flat模型,即绕过了Intel的段式内存管理,体现在所有进程的段选择子均指向GDT,而GDT中有用的只有四项:

 代码如下 复制代码
.quad 0x00cf9a000000ffff /* 0x10 kernel 4GB code at 0x00000000 */
.quad 0x00cf92000000ffff /* 0x18 kernel 4GB data at 0x00000000 */
.quad 0x00cffa000000ffff /* 0x23 user 4GB code at 0x00000000 */
.quad 0x00cff2000000ffff /* 0x2b user 4GB data at 0x00000000 */

每一项一个段描述子的base均为0,大小均为4G,只有权限的区别。
也就说linux中虚拟地址经过段式管理的映射变成线性地址后,数值上不变的。
Linux真正的内存管理是基于页式管理的,在两级页表的情况下:线性地址的高10位为pgd的下标用于定位页表,中间10位为pt的下标用于定位页表项,低12位为页偏移地址。

 

相关文章

精彩推荐