Linux中有关程序执行的思维导图,包括程序执行概念、ELF 可执行文件、命令行参数和 shell 环境、函数库
树图思维导图提供 程序执行思维导图 在线思维导图免费制作,点击“编辑”按钮,可对 程序执行思维导图 进行在线思维导图编辑,本思维导图属于思维导图模板主题,文件编号是:b2c03df9afd131772df55f29fcbc1f0b
程序执行思维导图思维导图模板大纲
Linux 中的程序和命令通常由命令解释器执行,这一命令解释器称为shell
操作系统用来将映像正确装入内存并执行的信息
可执行可连接格式
ELF 在装入内存时多一些系统开支,但是更为灵活
包含了可执行代码和数据,通常也称为正文和数据
当用户敲入一个命令时,从 shell 可以接受一些命令行参数
命令行参数和环境串都放在用户态堆栈
注意环境变量位于栈底附近正好在一个 NULL 的长整数之后
每个高级语言的源代码文件都是经过几个步骤才转化为目标文件的
汇编语言指令的机器代码,它们和相应的高级语言指令对应
链接程序把程序所有的目标文件收集起来并构造可执行文件
静态库缺点
它们占用大量的磁盘空间
每个静态链接的可执行文件都复制库代码的一部分
现代 UNIX 系统利用了共享库
可执行文件不用再包含库的目标代码,而仅仅指向库名
程序解释器的程序就专注于分析可执行文件中的库名
动态连接库
只有在运行时才被连接到进程的虚拟地址中
使用同一动态连接库的多个进程,只需在内存中保留一份共享库信息即可
节省了内存空间
当共享库需要在运行时连接到进程虚拟地址时,Linux 的动态连接器利用 ELF 共享库中的符号表完成连接工作
符号表中定义了 ELF 映像引用的全部动态库例程