虚拟地址,逻辑地址,线性地址,物理地址有什么区别

虚拟地址是由程序产生的由段选择符和段内偏移地址组成的地址。这两部分组成的地址并没有直接访问物理内存,而是要通过分段地址的变换处理后才会对应到相应的物理内存地址。

逻辑地址指由程序产生的段内偏移地址。有时把逻辑地址当成虚拟地址,两者并没有明确的界限。

线性地址是指虚拟地址到物理地址变换的中间层, 是处理器可寻址的内存空间(称为线性地址空间)中的地址。程序代码会产生逻辑地址,或者说段中的偏移地址,加上相应段基

址就生成了一个线性地址如果启用了分页机制,那么线性地址可以再经过变换产生物理地址。若是没有采用分页机制,那么线性地址就是物理地址。

物理地址是指现在 CPU 外部地址总线上的寻址物理内存的地址信号,是地址变换的最终结果。

虚拟地址到物理地址的转换方法是体系结构相关的,一般分段与分页两种方式。以X86CPU为例:

分段分页都是支持的。内存管理单元负责从虚拟地址到物理地址的转化。逻辑地址是段标识+段内偏移 MMU(内存管理单元) 通过查询段表,可以把逻辑地址转换为线性地址。

如果CPU没有开启分页功能,线性地址就是物理地址;如果CPU开启了分页功能,MMU还需要查询业表来将线性地址转换为物理地址;

逻辑地址(段表)--------> 线性地址(页表)------------->物理地址。

映射是一种多对一的关系,即不同的逻辑地址可以映射到同一个线性地址上;

不同的线性地址也可以映射到同一个物理地址上。而且同一个线性地址在发生变化后,也可能被重新装载到另外一个物理地址上所以这种多对一的关系也会随时间发生变化。

阅读更多
换一批

没有更多推荐了,返回首页