程序员的自我修养-----从操作系统角度看可执行文件的装载

进程的建立一般只需要三个过程:
1.创建一个独立的虚拟地址空间;创建虚拟空间,并不是真正的创建空间,而是在内核空间创建页目录项。
2.读取可执行文件,建立可执行文件与虚拟空间的映射关系;
Linux装载的整个过程为在bash程序中输入要执行的文件名,参数等。
bash首先调用fork执行复制进程,创建一个内核进程管理表。之后调用execve将陷入内核,进行系统调用。
在这里插入图片描述
系统调用的函数是sys_execve,进行参数复制与检查之后,调用do_execve,如果找到文件,就读取文件的前128个字节,文件都是靠开始的几个字节来区别可执行文件的种类,
特别是开头的四个字节,被称为魔数,可执行文件有ELF,a.out,Java,脚本文件。找到ELF执行文件后,对ELF文件进行映射。
3.将CPU的指令寄存器设置为可执行文件的入口地址,转到程序处执行。

发布了24 篇原创文章 · 获赞 3 · 访问量 930

猜你喜欢

转载自blog.csdn.net/HIT_zhanmusi/article/details/103339943