一、虚拟地址与物理地址的区别:1、定义不同;2、位置不同;3、访问不同;4、地址空间不同。定义不同是指,CPU 在程序运行时生成虚拟地址,而物理地址是内存中的一个位置。二、虚拟地址与物理地址的联系:通过地址绑定,虚拟地址可以映射到物理地址。
一、虚拟地址与物理地址的区别
1、定义不同
虚拟地址:CPU 在程序运行时生成虚拟地址。
物理地址:物理地址是内存中的一个位置。
2、位置不同
虚拟地址:虚拟地址在内存中不存在物理存在。
物理地址:物理地址是内存单元中的一个位置。
3、访问不同
虚拟地址:虚拟地址用作访问物理地址的引用。
物理地址:无法直接访问物理地址。
4、地址空间不同
虚拟地址:CPU 生成的有关程序的所有虚拟地址的集合称为虚拟地址空间。
物理地址:映射到虚拟地址的所有物理地址称为物理地址空间。
二、虚拟地址与物理地址的联系
虚拟地址可以映射到物理地址。内存由大型数组地址组成。CPU 负责从程序计数器获取指令地址。这些指令可能会导致加载或存储到特定内存地址。
地址绑定是从地址空间映射到另一个地址空间的过程。逻辑地址由 CPU 在执行期间生成,而物理地址是指物理内存单元(加载到内存中的位置)中的位置。请注意,用户仅处理逻辑地址。MMU 转换逻辑地址。此过程的输出是RAM中数据的适当物理地址。地址绑定可以通过三种不同的方式完成:
- 编译时:如果您知道进程在编译时将驻留在内存中的位置,则可以生成绝对地址。也就是说,在编译过程中,在程序可执行文件中生成一个物理地址。将这样的可执行文件加载到内存中非常快。但是,如果另一个进程占用生成的地址空间,则程序崩溃,并且需要重新编译该程序以使用虚拟地址空间。
- 加载时间:如果在编译时不知道进程将驻留的位置,则将生成重新定位的地址。加载程序将重新定位的地址转换为绝对地址。主内存中进程的基址由加载器添加到所有逻辑地址以生成绝对地址。如果进程的基址发生更改,则需要再次重新加载进程。
- 执行时间:指令已经加载到内存中并由 CPU 处理。此时可以分配或重新分配额外的内存。如果进程可以在执行期间从一个内存移动到另一个内存(在加载或运行时完成动态链接),则使用此过程。
三、虚拟地址简介
虚拟地址又叫虚拟内存,虚拟内存是内存管理的一种方式, 它在磁盘上划分出一块空间由操作系统管理,当物理内存耗尽是充当物理内存来使用。它将多个物理内存碎片和部分磁盘空间重定义为连续的地址空间,以此让程序认为自己拥有连续可用的内存。当物理内存不足时,操作系统会将处于不活动状态的程序以及它们的数据全部交换到磁盘上来释放物理内存,以供其它程序使用。
虚拟地址的相关知识:
- 创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟进程地址空间。之所以是 4GB ,是因为在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即为 4GB 大小的容量。
- 每个进程只能访问自己虚拟地址空间中的数据,无法访问别的进程中的数据,通过这种方法实现了进程间的地址隔离。
- 4GB 的虚拟地址被分成了 4 部分: NULL 指针区、用户区、 64KB 禁入区、内核区。应用程序能使用的只是用户区而已,大约 2GB 左右 ( 最大可以调整到 3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
- 目前PC上页面大小为4K,程序运行到哪页就为哪页分配内存,并建立虚拟地址空间页和刚刚建立的物理内存页间的映射。
- 一个PE是一些编译好的数据和指令的集合,也被分为很多页。4G的地址空间并非真正创建,只是创建虚拟地址空间到物理地址空间映射的页表。
- PE文件中所有的段会一一映射到虚拟地址空间中相应的页。
- 当CPU访问某一个虚拟地址时,发现该地址并没有相关联的物理地址时,产生一个缺页错误,于是CPU将控制权交回OS,OS为该页面映射物理内存。
- 当CPU要访问的数据在内存中时,可以直接访问。当CPU要访问的数据不再内存中,而位于页交换文件中,OS会在内存中找到一个闲置的页面,如果找不到闲置的页面,先释放一个已分配的页面。
- 页交换文件的左右时物理内存不够时,将部分数据从内存中移到页交换文件中,否则要释放物理内存,删除页面映射关系。
四、物理地址简介
网卡物理地址存储器中存储单元对应实际地址称物理地址,与逻辑地址相对应。网卡的物理地址通常是由网卡生产厂家写入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。
它定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。物理寻址在此处被定义,逻辑拓扑(信号通过物理拓扑的路径)也在此处被定义。线路控制、出错通知(不纠正)、帧的传递顺序和可选择的流量控制也在这一子层实现。
延伸阅读
MMU是什么
MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。
文章标题:虚拟地址与物理地址的区别与联系是什么,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/47889