每日一博 | 分页机制是如何建立起来的,地址如何转换?
1、逻辑地址,线性地址,虚拟地址,物理地址傻傻分不清? (1)逻辑地址 在IA-32架构下,分段是必须的,而分页并不是必须的。不论分页与否,访问内存都必须采用“段基址:段内偏移地址”的策略。 因此访问内存需要16&32共48位的地址信息,这便是逻辑地址,高12位为段选择子,后面32位为段内偏移地址。 (2)线性地址 使用选择子索引到段描述符取得32位的段基址后与逻辑地址内的32位段内偏移地址相加后得到一个32位的地址信息,这便是线性地址。 (3)虚拟地址 如果不启用分页机制,线性地址就是物理地址,而如果启用分页机制的话,线性地址又叫做虚拟地址。 (4)物理地址 物理地址,不用多说,内存单元的真正地址 2、什么是分页? 分页本质上是将各种大小不同的内存段拆分成大小相同的内存块(通常4KB),以便进行内存管理的一种机制。 3、为什么要分页? 主要是便于内存管理,解决纯分段情况下应用程序过多,或者内存碎片过多而无法容纳新进程。又或者重新加载某内存段(之前交换出去的)时找不到合适的内存区域的问题。 造成这情况的原因:只分段的情况下,线性地址就是物理地址,两者都是连续的,不够灵活,不可能...

