每日三问/操作系统篇<1>:物理地址、虚拟地址、虚拟内存是什么?
-
物理地址:内存芯片级的单元寻址,是放在寻址总线上的地址,加载到内存地址寄存器中的地址,内存单元的真正地址。物理地址是明确的、最终用在总线上的编号,不必转换,不必分页,也没有特权级检查。
-
虚拟地址:没有经过分页机制和分段机制转换的地址,也就是段寄存器和变址寄存器内容的组合。
-
逻辑地址:上层程序员可以操作的地址,和段相关的偏移地址部分,也就是变址寄存器中存储的32位偏移地址,而其他寄存器上的地址往往对于上层程序员来说是不可更改甚至是不可见的. 只有在实模式下,逻辑地址才和物理地址一致(因为实模式没有分段或分页机制,
Cpu
不进行自动地址转换);逻辑地址也就是在保护模式下程序执行代码段限长内的偏移地址(假定代码段、数据段如果完全一样).应用程序员仅需与逻辑地址打交道,而分段和分页机制对您来说是完全透明的,仅由系统编程人员涉及.应用程序员虽然自己可以直接操作内存,那也只能在操作系统给你分配的内存段操作。 -
线性地址:逻辑地址到物理地址变换之间的中间层。虚拟地址通过分段机制以后,可以得到段基址、段界限以及段偏移地址(即逻辑地址),段基址与段偏移地址的组合就是线性地址。
虚拟内存空间图:
-
- 虚拟内存:操作系统的一项技术,当程序被载入内存时,运用虚拟内存技术可以让程序误以为自己正在独占电脑