Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

第3部分 转载与动态链接

第6章 可执行文件的装载与进程

6.1 进程虚拟地址空间

6.2 装载的方式

6.3 从操作系统角度看可执行文件的装载

6.4 进程虚存空间分布

6.5 Linux内核装载ELF过程简介

6.6 Windows PE的装载

6.7 本章小结

可执行文件只有装载到内存以后才能被CPU执行。早期的程序装载十分简陋,装载的基本过程就是把程序从外部存储器中读取到内存中的某个位置。随着硬件MMU的诞生,多进程、多用户、虚拟存储的操作系统出现以后,可执行文件的装载过程变得非常复杂。

通过这一章,我们希望能通过介绍ELF文件在Linux下的装载过程,来层层拨开迷雾,看看可执行文件装载的本质到底是什么。首先会介绍什么是进程的虚拟地址空间?为什么进程要有自己独立的虚拟地址空间?然后我们将从历史的角度来看装载的几种方式,包括覆盖装载、页映射。接着还会介绍进程虚拟地址空间的分布情况,比如代码段、数据段、BSS段、堆、栈分别在进程地址空间中怎么分布,它们的位置和长度如何决定。