1.linux下程序转化成进程 linux下C程序的生成分成:预编译–>编译–>汇编–>链接。gcc编译器通过前三步将源文件转换成目标文件。若程序有多个目标文件或者程序中使用了库函数,编译器还需要将所有目标文件或者所需要的库链接起来,最后生成可执行程序。当程序执行时,操作系统将可执行程序复制到内存中。程序转化成进程需要3步:
(1)内核将程序读入内存,为程序分配内存空间 (2)内存为该程序分配进程标识符PID,和其他资源 (3)内核为该进程保存PID和相应的状态信息,将进程放在运行队列等待执行。程序转化成进程后就可以被操作系统调度执行了。
2.进程的内存映像 进程的内存映像就是在内核中如何存放可执行程序。在程序–>进程,操作系统将程序复制到内存中 linux程序映像一般布局 从内存的低地址到高地址依次为:
3.可执行程序和内存映像的区别
(1)位置可执行程序在硬盘中,内存映像在内存中(2)有无堆栈可执行程序没有堆栈,它被加载到内存中才会分配堆栈(3)变量的储存可执行程序也有未被初始化的数据段,但是数据段却不被储存在硬盘中的可执行文件中。(4)静态动态之分可执行程序是静态的,不变的。内存映像随着程序的执行动态变化。(数据段随着程序的执行要存出新的变量值,栈在函数调用时也在不断变化)新闻热点
疑难解答