五、可执行文件的装载与进程

2021-04-01  本文已影响0人  凉夜lrs

每个进程运行起来之后,将拥有自己的虚拟地址空间,大小由CPU位数决定。硬件决定了地址空间的最大理论上限,即硬件的寻址空间大小,比如32位的决定虚拟地址空间为4GB。

1. 进程的建立(操作系统层面)

上述步骤执行完之后,可执行文件的指令和数据都没有装入内存中,只是建立了两层映射关系。通过页错误处理,操作系统为进程分配相应的物理页面来满足进程需求。

2. 可执行文件链接视图和执行视图

可执行文件包含多个段,一对一映射到进程虚拟空间的话,会产生空间浪费的问题(页长度的整数倍)。而操作系统实际并不关心段的内容,只关心一些跟装载相关的问题,主要是段的权限(可读、可写、可执行),为了减少浪费,对于相同权限的段,把它们合并到一起当作一个段映射。

“Segment”和“Section”就是从不同的角度划分同一个文件。“Section”是链接视图(Linking View),从链接的角度分段;“Segment”是执行视图(Execution View),从执行的角度分段。一般来说,“Segment”的段数小于“Section”的段数。

可执行文件和共享库文件都有一个程序表头(Program Header Table)用来保存“Segment”的信息,目标文件不需要装载,所以没有。

3.小结

操作系统通过给进程空间划分一个个VMA来管理进程的虚拟空间;基本原则是将相同权限的映射成一个VMA。一个进程基本可以分为如下几个VMA:

上一篇 下一篇

猜你喜欢

热点阅读