windows游戏编程X86 32位保护模式下的内存管理概述(一)
本系列文章由jadeshu编写,转载请注明出处。http://blog.csdn.net/jadeshu/article/details/22445945
作者:jadeshu 邮箱: jadeshu@qq.com 欢迎邮件交流
CPU段式内存管理,逻辑地址转换为线性地址
CPU页式内存管理,线性地址转换成物理地址
目的:CPU进行地址变换(映射)的主要目的是为了解决虚拟内存空间到物理内存空间的映射问题。虚拟内存空间的含义是指一种利用二级或外部存储空间,使程序能不受实际物理内存量限制而使用内存的一种方法
当CR0中的PG位置1时,启动分页管理功能,为0时,这禁止启动分页管理功能,并且把线性地址作物理地址使用。
线性地址= 段基指 + 偏移地址
16位选择子寄存器是原先的段寄存器加上扩展的两个新段寄存器:CS、SS、DS、ES、FS、GS
选择子高13位就是段描述符表的索引(第2位是区分索引GDT和LDT标志)
偏移量是段描述符描述的内存段中偏移
线性地址通过内存分页机制映射为物理地址
如果不需要分页机制那么可以绕过,此时线性地址=物理地址
由地址位数可知一个段的大小最大是2^32 = 4GB