可执行文件为什么又叫映像文件image?——程序员的自我修养——链接、装载与库》笔记

“可执行文件在装载时实际上是被映射的虚拟空间” —— 《程序员的自我修养——链接、装载与库》

“可执行文件”与“执行该可执行文件进程的虚拟空间”存在着一种映射关系,这种映射关系只是保存在OS内部的一个数据结构。

举例子:身份证就是一种映射关系,我的身份证是“鹅城”给我发的,我并不需要真的在“鹅城”,但通过这个身份证的映射又真的能找到我。

直到启动运行,可执行文件中的指令、数据都没有被装入内存中。OS仅通过可执行文件头部的信息建立起“可执行文件”和进程虚存之间的映射关系。

  1. 假设开始运行了,CPU开始执行程序的入口地址了,然后发现入口地址这里的页面是个空页,于是“页错误”。
  2. 页错误——cpu把控制权给OS,此时“可执行文件”与“执行该可执行文件进程的虚拟空间”间建立的数据结构开始起作用,找到VMA,计算出在可执行文件中的偏移
  3. (MMU)然后在物理内存上分配一个物理页面。将进程中该虚拟页与物理页建立映射关系。
  4. 控制权返回给进程,进程从刚才页错误位置重新开始执行。
  5. 页错误不断产生,不断修复,程序也就运行起来了。

  • 8
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值