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

6.7 本章小结

在这一章中,我们探讨了程序运行时如何使用内存空间的问题,即进程虚拟地址空间问题。接着我们围绕程序如何被操作系统装载到内存中进行运行,介绍了覆盖装入和页映射的模式,分析了为什么要以页映射的方式将程序映射至进程地址空间,这样做的好处是什么,并从操作系统的角度观察进程如何被建立,当程序开始运行时发生页错误该如何处理等。

我们还详细介绍了进程虚拟地址空间的分布,操作系统如何为程序的代码、数据、堆、栈在进程地址空间中分配,它们是如何分布的。最后两个章节我们分别深入介绍了Linux和Windows程序如何装载并且运行ELF和PE程序。在这一章中,我们假设程序都是静态链接的,那么它们都只有一个单独的可执行文件模块。下一章中我们将介绍一种与静态链接程序不同的概念,即一个单一的可执行文件模块被拆分成若干个模块,在程序运行时进行链接的一种方式。