操作系统中的逻辑地址和物理地址
逻辑地址 是在程序运行时由 CPU 生成的。逻辑地址是虚拟地址,因为它在物理上不存在,因此也称为虚拟地址。此地址用作 CPU 访问物理内存位置的参考。术语逻辑地址空间用于由程序的角度生成的所有逻辑地址的集合。
内存管理单元的硬件设备用于将逻辑地址映射到其相应的物理地址。
物理地址 标识内存中所需数据的物理位置。用户从不直接处理物理地址,但可以通过其对应的逻辑地址进行访问。用户程序生成逻辑地址,认为程序运行在这个逻辑地址上,但程序需要物理内存来执行,因此,逻辑地址必须通过MMU映射到物理地址才能使用。术语物理地址空间用于与逻辑地址空间中的逻辑地址对应的所有物理地址。
操作系统中逻辑地址和物理地址的区别
- 逻辑地址和物理地址之间的基本区别在于,逻辑地址是从程序的角度由CPU生成的,而物理地址是内存单元中存在的位置。
- 逻辑地址空间是CPU为程序生成的所有逻辑地址的集合,而映射到相应逻辑地址的所有物理地址的集合称为物理地址空间。
- 逻辑地址物理上不存在于内存中,而物理地址是内存中可以物理访问的位置。
- 相同的逻辑地址由编译时和加载时地址绑定方法生成,而它们在运行时地址绑定方法中彼此不同。 详情请参考这里。
- 逻辑地址由 CPU 在程序运行时生成,而物理地址由内存管理单元 (MMU) 计算。
操作系统中逻辑地址和物理地址比较表:
参数 | 逻辑地址 | 物理地址 |
---|---|---|
基本 | 由CPU生成 | 内存单元中的位置 |
地址空间 | 逻辑地址空间是由 CPU 参考程序生成的所有逻辑地址的集合。 | 物理地址是映射到相应逻辑地址的所有物理地址的集合。 |
可见性 | 用户可以查看程序的逻辑地址。 | 用户永远无法查看程序的物理地址。 |
生成 | CPU 生成 | 由 MMU 计算 |
访问 | 用户可以使用逻辑地址访问物理地址。 | 用户可以间接访问物理地址,但不能直接访问。 |
可编辑 | 逻辑地址可以更改。 | 物理地址不会改变。 |
也称为 | 虚拟地址 | 真实地址 |