虚拟地址与物理地址的区别与联系是什么

一、虚拟地址与物理地址的区别:1、定义不同;2、位置不同;3、访问不同;4、地址空间不同。定义不同是指,CPU 在程序运行时生成虚拟地址,而物理地址是内存中的一个位置。二、虚拟地址与物理地址的联系:通过地址绑定,虚拟地址可以映射到物理地址。

一、虚拟地址与物理地址的区别

1、定义不同

虚拟地址:CPU 在程序运行时生成虚拟地址。

物理地址:物理地址是内存中的一个位置。

2、位置不同

虚拟地址:虚拟地址在内存中不存在物理存在。

物理地址:物理地址是内存单元中的一个位置。

3、访问不同

虚拟地址:虚拟地址用作访问物理地址的引用。

物理地址:无法直接访问物理地址。

4、地址空间不同

虚拟地址:CPU 生成的有关程序的所有虚拟地址的集合称为虚拟地址空间。

物理地址:映射到虚拟地址的所有物理地址称为物理地址空间。

二、虚拟地址与物理地址的联系

虚拟地址可以映射到物理地址。内存由大型数组地址组成。CPU 负责从程序计数器获取指令地址。这些指令可能会导致加载或存储到特定内存地址。

地址绑定是从地址空间映射到另一个地址空间的过程。逻辑地址由 CPU 在执行期间生成,而物理地址是指物理内存单元(加载到内存中的位置)中的位置。请注意,用户仅处理逻辑地址。MMU 转换逻辑地址。此过程的输出是RAM中数据的适当物理地址。地址绑定可以通过三种不同的方式完成:

  1. 编译时:如果您知道进程在编译时将驻留在内存中的位置,则可以生成绝对地址。也就是说,在编译过程中,在程序可执行文件中生成一个物理地址。将这样的可执行文件加载到内存中非常快。但是,如果另一个进程占用生成的地址空间,则程序崩溃,并且需要重新编译该程序以使用虚拟地址空间。
  2. 加载时间:如果在编译时不知道进程将驻留的位置,则将生成重新定位的地址。加载程序将重新定位的地址转换为绝对地址。主内存中进程的基址由加载器添加到所有逻辑地址以生成绝对地址。如果进程的基址发生更改,则需要再次重新加载进程。
  3. 执行时间:指令已经加载到内存中并由 CPU 处理。此时可以分配或重新分配额外的内存。如果进程可以在执行期间从一个内存移动到另一个内存(在加载或运行时完成动态链接),则使用此过程。

三、虚拟地址简介

虚拟地址又叫虚拟内存,虚拟内存是内存管理的一种方式, 它在磁盘上划分出一块空间由操作系统管理,当物理内存耗尽是充当物理内存来使用。它将多个物理内存碎片和部分磁盘空间重定义为连续的地址空间,以此让程序认为自己拥有连续可用的内存。当物理内存不足时,操作系统会将处于不活动状态的程序以及它们的数据全部交换到磁盘上来释放物理内存,以供其它程序使用。

虚拟地址的相关知识:

  1. 创建一个进程时,操作系统会为该进程分配一个 4GB 大小的虚拟进程地址空间。之所以是 4GB ,是因为在 32 位的操作系统中,一个指针长度是 4 字节,而 4 字节指针的寻址能力是从 0x00000000~0xFFFFFFFF ,最大值 0xFFFFFFFF 表示的即为 4GB 大小的容量。
  2. 每个进程只能访问自己虚拟地址空间中的数据,无法访问别的进程中的数据,通过这种方法实现了进程间的地址隔离。
  3. 4GB 的虚拟地址被分成了 4 部分: NULL 指针区、用户区、 64KB 禁入区、内核区。应用程序能使用的只是用户区而已,大约 2GB 左右 ( 最大可以调整到 3GB) 。内核区为 2GB ,内核区保存的是系统线程调度、内存管理、设备驱动等数据,这部分数据供所有的进程共享,但应用程序是不能直接访问的。
  4. 目前PC上页面大小为4K,程序运行到哪页就为哪页分配内存,并建立虚拟地址空间页和刚刚建立的物理内存页间的映射。
  5. 一个PE是一些编译好的数据和指令的集合,也被分为很多页。4G的地址空间并非真正创建,只是创建虚拟地址空间到物理地址空间映射的页表。
  6. PE文件中所有的段会一一映射到虚拟地址空间中相应的页。
  7. 当CPU访问某一个虚拟地址时,发现该地址并没有相关联的物理地址时,产生一个缺页错误,于是CPU将控制权交回OS,OS为该页面映射物理内存。
  8. 当CPU要访问的数据在内存中时,可以直接访问。当CPU要访问的数据不再内存中,而位于页交换文件中,OS会在内存中找到一个闲置的页面,如果找不到闲置的页面,先释放一个已分配的页面。
  9. 页交换文件的左右时物理内存不够时,将部分数据从内存中移到页交换文件中,否则要释放物理内存,删除页面映射关系。

四、物理地址简介

网卡物理地址存储器中存储单元对应实际地址称物理地址,与逻辑地址相对应。网卡的物理地址通常是由网卡生产厂家写入网卡的EPROM(一种闪存芯片,通常可以通过程序擦写),它存储的是传输数据时真正赖以标识发出数据的电脑和接收数据的主机的地址。

它定义了数据帧怎样在介质上进行传输。在共享同一个带宽的链路中,对连接介质的访问是“先来先服务”的。物理寻址在此处被定义,逻辑拓扑(信号通过物理拓扑的路径)也在此处被定义。线路控制、出错通知(不纠正)、帧的传递顺序和可选择的流量控制也在这一子层实现。

延伸阅读

MMU是什么

MMU是Memory Management Unit的缩写,中文名是内存管理单元,有时称作分页内存管理单元(英语:paged memory management unit,缩写为PMMU)。它是一种负责处理中央处理器(CPU)的内存访问请求的计算机硬件。它的功能包括虚拟地址到物理地址的转换(即虚拟内存管理)、内存保护、中央处理器高速缓存的控制,在较为简单的计算机体系结构中,负责总线的仲裁以及存储体切换(bank switching,尤其是在8位的系统上)。

文章标题:虚拟地址与物理地址的区别与联系是什么,发布者:Z, ZLW,转载请注明出处:https://worktile.com/kb/p/47889

(1)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
Z, ZLWZ, ZLW
上一篇 2023年3月26日
下一篇 2023年3月28日

相关推荐

  • 编程要学习那些语言

    Python、JavaScript、Java 是当前最流行的编程语言。Python 因其简洁易读的语法和强大的库支持而广受欢迎,在数据科学、机器学习、网络开发等领域都有广泛应用。它的简洁性使得初学者易于上手,同时它的多功能性也让经验丰富的开发者能够用来构建复杂的系统。 一、PYTHON的普及与应用 …

    2024年5月21日
    14500
  • 编程应该如何自学

    编程自学成功的关键要素包括1、设定明确的学习目标,2、选择合适的学习资源,3、制定学习计划,4、动手实践,5、加入社区,以及6、持续的学习和复习。 其中,设定明确的学习目标尤为重要。明确目标意味着你知道自己想要通过学习编程达到什么样的水平,比如是希望能够构建自己的网站、成为一名数据分析师还是开发手机…

    2024年5月21日
    7500
  • 梯形图编程是什么

    梯形图编程是一种以图形化方式表示控制逻辑的编程方法,主要应用于自动化和控制系统领域。该方法使得逻辑控制过程直观、易理解,能够有效提高系统设计的效率和可靠性。其中,逻辑控制的图形化表现是其最为显著的特点之一。 在梯形图编程中,程序的每一段逻辑都被分解成若干个"梯级",每个梯级代表一…

    2024年5月21日
    5100
  • 为什么要学儿童编程

    在当今这个数字化时代,1、培养逻辑思维、2、增强解决问题的能力、3、激发创造力、4、为未来的职业生涯打基础等都是学习儿童编程的重要原因。培养孩子的逻辑思维尤其重要,因为这种能力是学习任何知识和技能的基础。通过编码,孩子们可以学会如何分析问题、拆解问题,并通过一步一步的逻辑顺序解决问题。这种思维模式在…

    2024年5月21日
    5900
  • 上海什么是少儿编程定制

    上海少儿编程定制是指专门为上海地区的儿童提供个性化、针对性强的编程教育服务。这种服务的核心在于1、满足儿童的个性化学习需求;2、与地方教育资源结合;3、提供符合当地教育标准的教学内容和方案。在上海,少儿编程定制通常涉及软件编程、硬件操控和项目实践,有助于培养孩子们的逻辑思维能力、解决问题能力和创新精…

    2024年5月21日
    4100

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部