linux-elf装载过程

本文介绍了Linux系统中ELF文件的装载过程,涉及内存映射、段地址对齐以及装载视图等内容。在装载过程中,程序代码和数据根据ELF文件的布局映射到进程的虚拟地址空间。MMU负责管理这一过程,确保高效利用内存,并在必要时通过缺页异常从磁盘加载内容。文章还讨论了链接视图与执行视图的区别,以及段合并优化如何减少内存消耗。
摘要由CSDN通过智能技术生成

装载

装载到哪里?内存,进程上看,是映射到了虚拟进程空间.

装载谁? 程序运行的实体代码,数据,来自elf,共享库,OS等.

怎么装载?利用程序局部性原理: 运行某段程序时,很可能也要运行最近的1个代码块,于是先提前装载到内存.

内存肯定不够用,不过通过页映射,需要时(缺页异常),再从磁盘load到内存,做替换.

管理这个装载过程的,就是os的存储管理器(MMU).

具体过程:

1. 建立虚拟进程空间,
2. 读取elf文件头,建立好elf与虚拟空间映射关系,(为后续缺页装载准备).虚拟进程空间有个区域叫VMA, 对应映射的是elf的.text段
4. cpu pc跳转到入口,开始运行.
5.  发现空页,缺页异常,正式装载磁盘页到映射好的物理内存,虚拟进程空间也看的到

Screenshot from 2019-01-22 09-44-55-afff0265-55a1-4c88-bda8-fe795b025193

两个视图

链接的角度,elf的段按Section划分,(链接试图), 从装载的角度,elf按Segment(执行试图), 后者为了装载方便,不浪费内存,可能进行了段的合并优化等.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值