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

一、虚拟地址与物理地址的区别: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位的系统上)。

开发者生产力工具大全

从人工到自动化,从重复到创新,技术演进的历程中,都伴随着开发者工具类产品的发展,所以这里整理近几年口碑良好,使用广泛的22款程序员生产力工具。

1.研发项目管理与协作:PingCode

优点:让工作推进、进度/问题追踪、团队协作变得更简单,2021年研发项目管理榜单TOP1(36Kr)。

简介:覆盖研发全生命周期,广泛用于需求、版本、项目(敏捷/kanban/瀑布)、测试、缺陷、文档、效能等环节管理与协作。并且集成github、gitlab、jinkens等主流工具,支持私有部署、在线等多种部署使用方式。

教程/官网

2.任务管理/甘特图制作工具:Worktile

优点:功能成熟、性价比高、国内市场占有率最高的团队任务工具;

简介:在功能上Worktile 是一个工具集合,它具备OKR目标管理、项目管理、项目集管理、项目计划、项目风险、项目成本管理、企业网盘、审批、简报等能力。并且具备强大的自定义能力,能够配置出符合各种项目团队的流程、表单、字段、数据报表,以及具备丰富的模板市场。

官网/教程

3.分布式版本控制系统:Git

优点:分布式开发、速度快、灵活

简介:Git是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。也是Linus Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。

教程/官网

4.数据库管理工具:Navicat

优点:高效、安全,最好用的数据库管理工具。

简介:“Navicat”是一套可创建多个连接的数据库管理工具,用以方便管理 MySQL、Oracle、PostgreSQL、SQLite、SQL Server、MariaDB 和 MongoDB 等不同类型的数据库,它与阿里云、腾讯云、华为云、Amazon RDS、Amazon Aurora、Amazon Redshift、Microsoft Azure、Oracle Cloud 和 MongoDB Atlas等云数据库兼容。

官网/教程

其余工具可通过《神级程序员都用什么工具?程序员生产力工具大全 》查看,以上均整理自该文章。

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

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023年3月26日 下午11:55
下一篇 2023年3月28日 下午1:05

相关推荐

  • 什么是用例评审制度

    用例评审就是用来验证测试用例的正确性,有效性和测试覆盖等操作,这可以有效的保障测试实施,并且保障测试用例的改善等工作。说的简单一点,用例评审其实就是测试用例查缺补漏的一个过程,保证用例的有效性和覆盖性。 用例评审就是用来验证测试用例的正确性,有效性和测试覆盖等操作,这可以有效的保障测试实施,并且保障…

    2022年12月27日
    9500
  • 选择无纸化会议软件公司应该注意哪些事项

    选择无纸化会议软件公司应该注意的事项有:1、软件运行的速度;2、所展现的清晰度;3、软件的可扩展性。无纸化会议软件的速度决定了整个会议举办的效率,因此在选择软件时要有效的考虑好软件运行的流畅性,不能有延迟以免会影响到整个会议的效果及效率。 一、软件运行的速度 无纸化会议软件的速度决定了整个会议举办的…

    2023年5月7日
    600
  • 在编程概念中,表达式和语句分别是什么概念

    表达式是一个或多个常量、变量、运算符和函数的组合,编程语言根据其特定的优先级和关联规则解释它们,并计算它们来生成另外一个值。语句是命令式编程语言的一个语法单元,表示程序要执行的操作。程序是有一个或多个语句序列,语句可能包含内部组件(。 表达式 表达式是一个或多个常量、变量、运算符和函数的组合,编程语…

    2023年2月22日
    8600
  • 项目总体计划工具有哪些

    项目总体计划工具有:一、Worktile;二、PingCode;三、Ms project;四、Jira。Worktile是国内最顶级的项目计划、进度管理工具之一,它能做到多项目统筹管理,通过项目集、项目组合管理实现项目资源共享,统筹管理项目集内各项目状态、任务数以及任务进度。 一、Worktile …

    2023年4月27日
    1400
  • 开发安卓app用什么语言

    开发安卓app用什么语言:1、Java语言;2、C/C++;3、HTML5;4、Objective-C;5、Swift;6、C#。Java是一种面向对象的编程语言,是Android开发的主要语言,也是Android应用开发领域最流行的语言。 一、Java语言 Java是一种面向对象的编程语言,是An…

    2023年6月3日
    600
  • 工作计划表怎么做

    工作计划表制作步骤:1、确定目标和重点;2、制定计划表模板;3、制定每日任务列表;4、跟踪进度;5、保持灵活性。在制作工作计划表之前,您需要先确定自己的目标和重点。这有助于您将工作分解成更小的任务,并更容易地完成它们。 1、确定目标和重点 在制作工作计划表之前,您需要先确定自己的目标和重点。这有助于…

    2023年2月26日
    9600
  • Scala、Groovy、Clojure、Kotlin分别解决了Java的什么痛点

    1、Scala主要解决 Java 在灵活性和可扩展性方面的缺陷;2、Groovy主要解决 Java 在语法简洁性和可读性方面的缺陷;3、Clojure主要解决 Java 在函数式编程方面的缺陷;4、Kotlin提供更高的性能和安全,以及更加简洁的代码。Scala提供了更加强大的函数式编程和面向对象编…

    2023年1月30日
    21400
  • 钉钉okr怎么用

    钉钉okr使用步骤:1、创建目标;2、分解目标;3、跟踪进度;4、评估结果;5、调整目标。创建目标是指在钉钉中选择“工作台”-“OKR”,点击“创建目标”按钮,填写目标名称、描述、关键结果等信息。 一、钉钉okr使用步骤 1、创建目标 在钉钉中选择“工作台”-“OKR”,点击“创建目标”按钮,填写目…

    2023年3月25日
    13300
  • 相比于其他编程语言Java的优势在哪里

    Java的优势在于:1、Java是健壮的;2、Java是面向对象的语言;3、Java是分布式语言;4、Java的安全性;5、Java的中立性结构;6、高效能的Java程序;7、Java是解释执行的;8、Java对多线程的支持。Java是健壮的原因在于Java的目标是要协助开发人员建立各方面可靠的程序…

    2023年1月30日
    8700
  • 存储和储存的区别是什么

    存储和储存的区别在于以下几方面:1、定义不同;2、引证释义不同;3、引申意不同。其中,定义不同是指,储存,读音是chǔcún,储存指聚积保存。而在物流管理中,其具有时间价值。存储,读音是cúnchǔ,存储指把钱或物等积存起来。 一、定义不同 储存,读音是chǔcún,储存指聚积保存。而在物流管理中,…

    2023年2月18日
    44300

发表回复

登录后才能评论
联系我们
站长微信
站长微信
分享本页
返回顶部