理解地址空间和逻辑地址生成

1.1 地址空间

  • 物理地址:硬件(例如内存条)所支持地址空间,地址空间的管理由硬件完成。
  • 逻辑地址(虚拟地址):运行地址所看到的地址空间,地址空间是一维的,应用程序更加容易访问和管理。

1.2 逻辑地址生成

​ 图1

逻辑地址生成如图1所示,.c程序经过编译得到.s文件,再经过汇编得到.o文件,此时变量名和函数名都会转换成从0开始的连续地址空间,然后再经过链接把多个.o文件生成.exe文件,此时因为链接了其他函数库,所以地址会产生偏移,从图中可以看到程序地址从0-75变成了0-175。链接产生的地址0-175就是逻辑地址。

然后loader程序会把硬盘中的.exe文件加载到内存中运行。但是问题在于,假设另外一个程序的地址为0-200,那这两个程序因为地址冲突就不能一起执行了,为了解决这个问题,MMU会对程序的逻辑地址进行映射,转换成对应的物理地址。这样子,两个不同程序会映射到不同的物理地址上,避免冲突。所以程序加载时候会对逻辑地址进行重定位,转换成物理地址。

1.3逻辑地址与物理地址的映射

程序在执行指令movl %eax,$oxfffa620e,传递给CPU的地址是逻辑地址,但是一开始并不知道指令在物理内存哪个地方,需要把指令所在的逻辑地址转换成物理地址 ,然后在内存中的对应位置读取该指令并执行。CPU中有个MMU,MMU负责逻辑地址与物理地址之间的转换,转换后映射表也在内存中,查此表就可以知道逻辑地址对应哪个物理地址了。

MMU根据映射表把地址翻译成物理地址,控制器把物理地址和相关总线信号送到总线上,然后存储单元会识别总线上的地址和控制信号,如果控制信号是写,则把CPU送过来的数据写入到内存,如果是读, 那么就从内存中读出数据放到总线上,送到CPU。

1.4 地址检查

逻辑地址转换成物理地址还有检查的过程。譬如需要访问某个数据段的数据,数据段会有个段长度和段基址,访问时候,如果偏移量(逻辑地址从0开始,逻辑地址相当于偏移量)超过了段长度,那么访问是非法的。如果访问合法,那么偏移就会和段基址相加得到物理地址。

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
"Code 图案 注释 在线生成" 是一个指代在线生成代码图案并添加注释的工具或服务。在编程过程中,代码图案是一种将代码以图形形式呈现的方式,可以更直观地理解和分析代码的结构和逻辑。同时,注释是用来解释代码功能和目的的文字说明,有助于他人理解代码的含义和用法。 在线生成 code 图案及注释的工具可以为程序员提供便利,让他们更高效地工作。通过这个工具,用户可以上传自己的代码文件或代码片段,并选择合适的视觉化样式来生成图案。这些图案可以是流程图、时序图、类图、调用图等等。通过这种可视化的方式,程序员可以更直观地分析代码的执行流程,发现问题或潜在的改进空间。 同时,在生成代码图案的过程中,用户可以选择添加注释。注释是一种对代码进行解释和描述的文字内容,可以帮助其他人更好地理解代码的含义和用法。注释通常包括代码的功能介绍、重要变量和函数的说明,以及可能存在的问题和解决方案等。代码图案和注释相结合,可以使代码更易于理解、维护和合作。 总之,"Code 图案 注释 在线生成" 是一个在线工具,可以帮助程序员将代码可视化并添加注释,从而更方便地分析、调试和合作。这样的工具能够提高开发效率,促进代码质量的提升,同时也有助于知识的传播和分享。

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

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值