虚拟地址

虚拟地址是抽象的地址统称,大多数不能独立为物理地址,像逻辑地址、有效地址、线性地址和平坦地址皆属于虚拟地址的管理范畴。

  • 逻辑地址。通常格式位Segment:Offset。段内偏移地址Offset也叫做有效地址,在C语言或其他高级编程语言里,获取变量或函数的地址就是获取其有效地址。逻辑地址最终都会转换位线性地址,但不同运行模式下的 转换过程各不相同。
  • 线性地址。通过逻辑地址中的段基地址与段内偏移地址组合而成,这使得程序无法直接访问线性地址。平坦地址作为一种的线性地址,将段基地址和段长度覆盖了整个线性地址空间,而非线性地址空间的某一部分区域。

物理地址

物理地址空间中不仅包含物理内存(RAM、ROM)还有硬件设备。在处理器开启分页机制的情况下,线性地址需要经过页表映射才能转换为物理地址;否则线性地址将直接映射为物理地址。

  • I/O地址。I/O地址空间与内存地址空间相互隔离,它必须借助特殊的IN/OUT指令才能访问。I/O地址空间由65536个可独立寻址的I/O端口组成,寻址范围0~FFFFh,其中的端口地址F8h~FFh保留使用
  • 内存地址。内存地址空间不止有物理地址,还有其他外部硬件设备的地址空间,这些设备与物理内存共享内存地址空间。随着时间的推移,内存地址空间在保持向前兼容性的同时,不断增强寻址能力,从而造成可用物理内存碎片化、不连续化。所以可用物理内存空间、设备地址空间以及内存地址空间里。操作系统借助BIOS中断服务程序INT 15h的主功能编号AX=E820h可获取内存地址空间的相关信息。