逻辑地址和物理地址之间的关键区别在于CPU在程序执行期间生成逻辑地址,而物理地址是内存单元中的一个位置。
简单地说,CPU生成逻辑地址或虚拟地址。从正在运行的程序的角度来看,项目似乎位于逻辑地址提供的地址。存储器单元观察物理地址。此外,它允许通过数据总线访问主存储器中的特定存储单元。
目录
1. 概述和主要区别
2. 什么是逻辑地址
3. 什么是物理地址
4. 并排比较-逻辑地址与物理地址的表格形式
5. 摘要
什么是逻辑地址(logical address)?
CPU生成逻辑地址。从正在运行的程序的角度来看,项目似乎位于逻辑地址提供的地址。计算机上运行的应用程序看不到物理地址。它们总是使用逻辑地址工作。逻辑地址空间是程序生成的逻辑地址集。在使用逻辑地址之前,有必要将逻辑地址映射到物理地址。硬件设备内存管理单元(MMU)处理这个映射过程。
mmu映射方案
MMU遵循几种映射方案。在最简单的映射方案中,重定位寄存器中的值被加到应用程序产生的每个逻辑地址上,然后再将它们发送到内存中。还有一些其他复杂的方法来生成映射。地址绑定(即将指令和数据分配到内存地址)可以在三个不同的时间发生。
首先,如果预先知道了实际的内存位置,它可能在编译时发生,这将在编译时生成绝对代码。如果预先不知道内存位置,也可能在加载时发生。为此,需要在编译时生成可重新定位的代码。此外,地址绑定可以在执行时发生。这需要硬件支持地址映射。在编译时和加载时地址绑定中,逻辑地址和物理地址是相同的。但是当地址绑定发生在执行时,这个过程是不同的。
什么是实际地址(physical address)?
存储器单元观察物理地址或实际地址。它允许数据总线访问主存储器中的特定存储单元。MMU将逻辑地址映射到物理地址。例如,使用最简单的映射方案,将重定位寄存器(假设寄存器中的值是y)值添加到逻辑地址,从0到x的逻辑地址范围将映射到物理地址范围y到x+y。
此外,这也被称为该程序的物理地址空间。所有的逻辑地址都需要映射到物理地址才能使用。
逻辑地址(logical address)和实际地址(physical address)的区别
逻辑地址与物理地址 | |
逻辑地址是从正在执行的应用程序的角度看,项目似乎驻留在该地址。 | 物理地址是在地址总线电路上以二进制数的形式表示的存储器地址,以使数据总线能够访问主存储器的特定存储单元或存储器映射的I/O设备的寄存器。 |
能见度 | |
用户可以查看程序的逻辑地址。 | 用户无法查看程序的物理地址。 |
生成方法 | |
CPU生成逻辑地址。 | MMU计算物理地址。 |
无障碍 | |
用户可以使用逻辑地址访问物理地址。 | 用户不能直接访问物理地址。 |
总结 - 逻辑地址(logical address) vs. 实际地址(physical address)
逻辑地址和物理地址的区别在于,程序执行时CPU生成逻辑地址,而物理地址是内存单元中的一个位置。所有逻辑地址都需要映射到物理地址,然后MMU才能使用它们。当使用编译时地址绑定和加载时地址绑定时,物理地址和逻辑地址是相同的,但在使用执行时地址绑定时,它们是不同的。
引用
1.“逻辑地址”,维基百科,维基媒体基金会,2018年4月30日。此处提供2.“物理地址”,维基百科,维基媒体基金会,2018年4月30日。此处提供
2.“物理地址”,维基百科,维基媒体基金会,2018年4月30日。