日期:2014-05-16  浏览次数:20580 次

Linux程序映像的布局

Linux下C程序生成主要由四个步骤组成:预编译、编译、汇编、链接。编译器gcc经过预编译、编译、汇编3个步骤将源程序文件转换成目标文件。如果程序有多个目标文件或程序中使用了库函数,则编译器还需要将所有目标文件及所需的库文件链接起来,最后生成可执行程序。当程序执行时,操作系统将可执行程序复制到内存中,程序转为为进程通常需要以下步骤:


*内核将程序读入内存,为程序分配内存空间;

*内核为该进程分配进程标识符PID及其他所需资源;

*内核为该进程保存PID及相应的状态信息,把进程放到运行队列中等待执行。程序转化为进程后就可被操作系统的调度程序执行了。


进程的内存映像是指内核在内存中如何存放可执行程序文件。在将程序转化为进程的过程中,操作系统将可执行程序从硬盘复制至内存中,其布局如下:

<