一篇就让你了解进程的虚拟地址与物理地址是如何进行映射的

683 篇文章 145 订阅
订阅专栏
55 篇文章 188 订阅
订阅专栏

这篇文章可以让你了解进程的虚拟地址是如何映射物理地址的,在刚开始接触虚拟地址的概念时,真的是一头雾水,不知道它到底是个什么东西,一直有这个疑惑,为什么要用虚拟地址,虚拟地址的作用是什么?

经过这么多年做过的项目,积攒经验后,我可以略知一些虚拟地址的作用:

1. 代码的移植性变得更加的好,在不同的平台进行编译后,就可以直接运行,因为代码和虚拟地址打交道,到别的系统上,都会将你的虚拟地址转换为物理地址,如果不用虚拟地址,用物理地址,那么到了别的平台,就得考虑代码当前使用的物理地址,是否被别人使用了。

2. 不需要考虑内存分配的问题,也不需要担心内存不足,两个程序抢同一块内存导致崩溃的情况。

3. 还有一个好处就是,虚拟地址映射的不一定是物理地址,还可能是硬盘上的某一块地方,比如,把暂时不用的数据放到硬盘的虚拟内存上。

既然,虚拟内存是虚拟的,那么必然有一块实际的内存与它做映射才可以使用,那么,虚拟地址和物理地址是如何做映射的呢,下面,就给大家讲讲。

提到虚拟地址和物理地址的映射,不得不说一下在它俩之间其实还有一个线性地址的存在,那么进程想要访问真正的物理地址,首先要将虚拟地址转换为线性地址,然后经过MMU就可以将线性地址转换为真正的物理地址。

一篇就让你了解进程的虚拟地址与物理地址是如何进行映射的

虚拟地址到物理地址转换的逻辑图

下面一步一步来进行讲解,先讲讲虚拟地址和线性地址是如何进行转换的吧:

转换过程中,就需要一个寄存器,那就是段寄存器,段寄存器中存储的是描述符表的索引,你可以把描述符表看成是一个数组,那么段寄存器中的索引,你可以当成是数组的下标,这下你明白了吧。

上面说的描述符表你可能有点懵,它是啥东西,那么,我来告诉你,描述符表里面存放的是描述符,而描述符中就存放了线性的地址的基地址,我讲到这里,大家终于看到了线性地址的身影,

描述符中既然存放了基地址,那么就可通过基地址加上虚拟地址这个偏移量来算出线性地址了。

一篇就让你了解进程的虚拟地址与物理地址是如何进行映射的

虚拟地址到线性地址的转换关系图

现在,我更想告诉大家一个结果,那就是虽然虚拟地址和线性地址是有转换关系的,但是在LINUX系统上,段描述符中的线性地址的基地址都是从0开始的,所以,会推算出,虚拟地址和线性地址是相等的,这回明白了吧,讲了半天虚拟地址和线性地址的转换,到头来原来虚拟地址和线性地址是相等的。

接下来,就讲讲线性地址是如何映射物理内存的,只需要一张图,就能看明白:

一篇就让你了解进程的虚拟地址与物理地址是如何进行映射的

虚拟地址到物理地址转换的整体架构图

依据以下步骤进行转换:

1. 从CR3寄存器中取出页目录的地址。

2. 根据线性地址中的前10位,找到页目录的索引。

3. 根据页目录项的值与中间10位相加后得到页表中的索引。

4. 将页的起始地址与最后的12位相加后得到最终的物理地址。

结论:

在Linux系统上,虚拟地址和线性地址是相等的。

通过线性地址可以找到页目录中的页表,然后找到页表中的页表项,最终通过页表项和线性地址中的偏移,来找到最终的物理地址。

Linux进程概念
Noreturnperiod的博客
10-07 234
冯诺依曼体系结构 我们所认识的计算机,都是由一个个的硬件组件组成 输入单元:包括键盘、鼠标、扫描仪、写板等 中央处理器(CPU):含有运算器和控制器等 输出单元:显示器、打印机等 所需强调的几点 这里的存储器指的是内存 不考虑缓存情况,这里的CPU能且只能对内存进行读写,不能访问外设(输入或输出设备) 外设(输入或输出设备)要输入或输出数据,也只能写入内存或者从内存中读取 所有设备都只能直接和内存打交道 操作系统 概念 任何计算机系统都包含一个基本的程序集合,称为操.
虚拟地址物理地址怎么映射
z4a1c2的专栏
06-19 1617
每个进程都是独立的虚拟地址空间,两个独立进程的相同地址互不干扰,但是在物理上对每个进程可能也就分了一部分空间给了某个进程,所以中间就要用到映射,那么虚拟地址物理地址怎么映射呢?今天学习啦小编与大家分享下虚拟地址物理地址映射的具体操作步骤,有需要的朋友不妨了解下。   虚拟地址物理地址映射过程   这里只谈分页管理的机制,也是目前最重要的内存管理机制。   最初的设计想法:   结构图
【从浅学到熟知Linux】程序地址空间分布与进程地址空间详谈(含虚拟地址物理地址映射
最新发布
Jammingpro
04-14 1046
🏠关于专栏:Linux的浅学到熟知专栏用于记录Linux系统编程、网络编程等内容。🎯每天努力一点点,技术变化看得见。
虚拟地址物理地址之间映射结构
qq_45454698的博客
09-13 2177
首先从操作系统角度出发:完成虚拟地址物理地址映射 操作系统中将存储单位大小设为一个页(页面) 虚拟地址结构: 逻辑页号 页内地址 物理(内存)地址结构: 物理页号 页内地址 操作系统通过快表或页表查找到逻辑页号对应的物理页号,即虚拟地址物理地址映射,因此可以明显看到 逻辑页号——>物理页号 页内地址=页内地址 如果在两个表都没有找到,就需要从磁盘(外存)中将缺页的部分调入内存,同时将信息更新到快表和页表中 从计算机组成原理的角度:完成物理地址和Cathe之间的转
linux虚拟进程地址映射机制
ClearRiver 's Style
08-20 3288
6. 4 地址映射机制转自:http://www.eefocus.com/html/09-06/74979s.shtml顾名思义地址映射就是建立几种存储媒介(内存,辅存,虚存)间的关联,完成地址间的相互转换,它既包括磁盘文件到虚拟内存的映射,也包括虚拟内存到物理内存的映射,如图6.13所示。本节主要讨论磁盘文件到虚拟内存的映射,虚拟内存到物理内存的映射实际上是请页机制完成的(请看下节)。6.4.1 描述虚拟空间的数据结构前几节介绍的数据结构如存储节点(node)、管理区(zone)、页面(page)及空闲区
虚拟地址物理内存的映射 | 分段机制 分页机制 多级页表 多级页表 快表 段页式
HUAERBUSHI521的博客
07-10 2353
一.物理地址
Linux内核地址映射机制分析及实现.pdf
09-07
在Linux内核中,地址映射机制还包括虚拟内存的实现,它创建了一个比物理内存更大的虚拟地址空间,允许进程访问超过实际内存大小的数据。页交换和页面缓存策略进一步优化了资源使用,当物理内存不足时,不活跃的页面...
java 深入理解内存映射文件原理
01-20
虚拟内存其实就是硬盘的一部分,是计算机RAM与硬盘的数据交换区,因为实际的物理内存可能远小于进程的地址空间,这就需要把内存中暂时不用到的数据放到硬盘上一个特殊的地方,当请求的数据不在内存中时,系统产生却页...
LINUX进程的地址空间研究.pdf
09-06
这篇文章主要探讨了Linux进程虚拟地址空间的组织和管理,包括页表结构、内存分配策略以及线性地址与物理地址之间的映射。 在80x86架构中,Linux 2.6采用了分页和分段相结合的方式来管理内存。对于32位系统,常规...
19.番外篇 5 进程内存空间 (已优化)1
08-04
这种地址与实际的内存位置(物理地址)并不相同,它通过内存管理单元(MMU)进行映射。在Linux中,每个进程都有自己的独立虚拟地址空间,这样可以实现地址空间的隔离,防止一个进程的数据被其他进程访问或修改。 在...
lkd 地址空间
04-22
本篇文章将深入探讨这一主题,包括进程地址空间的特性、内存管理、内存区域、虚拟内存映射以及页表和页高速缓存的工作原理。 进程地址空间是每个用户空间进程的核心组成部分,它提供了进程虚拟内存的视图。在这个...
linux内核内存虚拟地址映射物理地址
一口Linux的专栏
11-26 2726
先说明下什么是虚拟地址。 Linux 内核给每个进程都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。虚拟地址空间的内部又被分为内核空间和用户空间两部分。不同字长(也就是单个 CPU 指令可以处理数据的最大长度)的处理器,地址空间的范围也不同。 其中,所有进程的内核空间,关联的都是相同的物理内存。进程切换到内核态后,才可以访问内核空间内存。我们下面说到的分段只针对用户空间。 有两种方式管理虚拟地址物理地址之间的关系。 1、段式管理(Segment):由段选择子和段内偏移量找到物理
进程地址空间映射
u013265795的专栏
04-16 555
下面是有关进程地址空间分配的资料:
虚拟地址物理地址之间的映射关系
qq_40508591的博客
08-21 5460
1、虚拟地址物理地址之间的映射是以页(4KB)为单位进行映射的; 2、每一个进程中都有一个进程控制块(PCB),里面包含了一些进程的信息(页目录,状态,句柄表,ID,PID……); 3、映射过程(32位系统下): 首先PCB中有一个指向一级分页表的指针,每一个页表的大小均为4096B(4KB),可以存储1024个地址。其中一级页表中每一个地址对应着一个二级页表的首地址,二级页表中也存储着1024个地址,其中每个地址分别对应着物理内存上面的每一个页的首地址。这样一来,虚拟地址空间所能够访问的地址有10
【C语言】【unix c】使用mmap将物理地址映射进程虚拟地址空间
刘星燎
08-17 2548
【C语言】【unix c】使用mmap将物理地址映射进程虚拟地址空间
OS / Linux / 进程虚拟地址空间布局以及与物理地址映射原理
布袋和尚
03-01 1228
(SAW:Game Over!)
【ARM】虚拟地址映射理解
baidu_37973494的博客
03-12 2887
1、关于虚拟地址物理地址物理地址(记为PA)是设计生产的时候确定的,是一种硬件编码生产的物理地址虚拟地址对于操作系统或者软件层面来说的。虚拟地址物理地址之间有一个虚拟地址转换层建立了一个从虚拟地址映射物理地址映射表(也就是映射原理中所说的页表)。物理地址是根据具体需求来确定大小的,通常情况下会比虚拟地址小。 例如:对于 32 为 ARM 处理器,最大寻址空间为 4GB(2^32)...
虚拟地址物理地址及其映射
早先生
03-02 3071
前一段时间在面试总监的时候,总监问了我这样的一个问题:你个我说说物理内存和虚拟内存到底是怎么一回事?其实之前我看过这个问题,据我理解的,当时是这么回答的“进程在运行的时候,操作系统都为其分配一个4GB的地址空间,即所谓的虚拟地址空间,一般情况下,当我们的程序很大的时候,实际的物理内存根本不能满足我们的需求的时候,这个时候操作系统就会借助磁盘空间来做虚拟的内存空间,把当前进程不需要的数据放在磁盘上,...
03-启动-虚拟地址映射
fuxkthat的专栏
05-22 302
启动-虚拟地址映射
物理地址虚拟地址映射高地址到低地址关系图
07-28
抱歉,我无法提供图形。但是,我可以为您提供一些关于物理地址虚拟地址映射的信息。 在计算机系统中,物理地址是指计算机内存中的实际硬件地址,用于访问主存储器中的数据。而虚拟地址是由操作系统提供的抽象地址空间,它允许应用程序使用独立于物理硬件的地址来访问内存。 物理地址虚拟地址之间的映射是通过内存管理单元(MMU)来实现的。MMU负责将虚拟地址转换为物理地址。 在常见的映射方式中,高地址映射到低地址是指较高的虚拟地址映射到较低的物理地址,而较低的虚拟地址映射到较高的物理地址。这种映射方式通常被称为反向映射(reverse mapping)。 具体的映射方式和映射关系图可能会因不同的操作系统和硬件架构而有所不同。例如,在x86架构中,通常采用页表(page table)来实现虚拟地址物理地址映射。 需要注意的是,映射关系图可能会因操作系统和硬件架构的不同而有所变化。因此,如果您需要更具体的信息,建议参考相关的操作系统和计算机体系结构文档。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • Linux iptables命令详解 153050
  • shell脚本中$0 $1 $# $@ $* $? $$ 的各种符号意义详解 76233
  • 华为交换机查看端口相关信息常用命令,排查故障法宝,转发收藏 64733
  • 小灵通为什么会退市? 42443
  • 千年虫”是什么东西?一个在计算机诞生之初,遗留下的巨大BUG 39504

分类专栏

  • 物联网 4篇
  • 瑞芯微 29篇
  • 从0学arm 37篇
  • zigbee 1篇
  • 鸿蒙 5篇
  • 前端 1篇
  • Linux驱动 55篇
  • 笔记 683篇
  • 粉丝问答 24篇
  • C语言 31篇
  • Linux操作 125篇
  • 待修改 31篇
  • 面试 6篇
  • 原创 112篇
  • uboot 26篇
  • 娱乐 47篇
  • BLE 8篇
  • 从0学linux驱动 5篇
  • linux系统应用 25篇
  • 网络 30篇
  • USB 18篇
  • ARM指令集 10篇
  • shell 16篇
  • exynos4412 29篇
  • arm 9篇

最新评论

  • Camera | 8.让rk3568支持前后置摄像头

    xnfh1996: 引用「rxw」 rxw,博主帮忙提供下xml、两个摄像头驱动文件,谢谢

  • 手把手教你ubuntu下移植MJPG-streamer

    boki_education: mjpg-streamer那个git似乎已经失效了

  • 如何使用4G模块通过MQTT协议传输温湿度数据到onenet

    m0_71300969: mqtt

  • 18. SPI协议,spi转can,MCP2515裸机驱动详解

    初学者m-: 你好 soft_reset这个函数 软件复位 是指的什么? 是控制MCP2515的reset引脚拉低一段吗?

  • dmidecode详解

    zhaodaola: Linux服务器基准性能测试常用工具 https://bjzhanghao.com/p/3366

大家在看

  • 模拟人生4提示steam_api.dll丢失问题的全方位修复指南
  • 如何免费体验《收获日2》: 收获日2免费试玩共享保姆级领取教程 65
  • 电脑系统安装win10怎么操作?简单几步就能完成,“傻瓜式”操作! 1177
  • 【华为OD机试】最优高铁城市修建方案(C++/Java/Python) 11
  • 昇思25天学习打卡第8天

最新文章

  • 记一次解决OTA死机重启bug,如何分析与解决措施?!
  • 有的人为什么宁愿做员工也不愿做领导?网友的回答让我恍然大悟
  • 软件开发者如何保护自己的知识产权?
2024年14篇
2023年43篇
2022年93篇
2021年827篇
2020年105篇

目录

目录

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一口Linux

众筹植发

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

PHP网站源码平湖百搜词包南山建站大鹏优秀网站设计民治网站推广大芬设计网站沙井关键词排名包年推广龙华网站优化软件观澜网站优化光明标王布吉英文网站建设观澜关键词排名民治关键词按天扣费福田网页设计西乡网站优化观澜阿里店铺托管盐田推广网站坪地营销型网站建设爱联建站永湖SEO按效果付费平湖企业网站设计木棉湾网站改版惠州百搜词包广州阿里店铺托管福田百度爱采购盐田优化龙华关键词按天计费大芬网站优化推广民治高端网站设计惠州网站制作大运SEO按天收费歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

PHP网站源码 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化