Linux系统下ELF可执行文件的装载与执行

 本文内容参考自《程序员的自我修养——链接、装载与库》

首先想和大家探讨几个问题,说一下自己的看法。

   1.有没有必要读Linux源码?

      个人看法:如果是早期0.11、0.12……这种版本,可以彻底研读,如果是2.6、3.0、4.0,那还是算了把。学好操作系统原理,然后动手实现这些原理,那么就够了,如果有机会做到内核开发的工作,再具体深入。

  2. 程序员的自我修养中,有没有必要所有知识点都深入学习?

      个人看法:有些知识点可能在自己的工作中压根用不到,此时只需要知道大体把整体衔接起来即可,如果需要用到,再深 入。    举个例子:对于很多程序员来说,知道main函数之前发生了什么没有任何意义。

 

目标文件链接为可执行文件图解:

    注:该图中段的个数、段与段之间的顺序可能和实际的有出入,在此只是为了说明原理,指出比较重要的地方。

Linux系统下ELF可执行文件的装载与执行_第1张图片

Linux装载ELF文件和执行过程:

Linux系统下ELF可执行文件的装载与执行_第2张图片

 ELF文件和虚拟空间的映射图:

 注:section和segment都译为 “段”,但是两者是不同的,segment是众多section的集合。

Linux系统下ELF可执行文件的装载与执行_第3张图片

其他一些知识:

Linux系统下ELF可执行文件的装载与执行_第4张图片

你可能感兴趣的:(操作系统)