码迷,mamicode.com
首页 > 系统相关 > 详细

实验七:Linux内核如何装载和启动一个可执行程序

时间:2016-04-10 10:21:04      阅读:244      评论:0      收藏:0      [点我收藏+]

标签:

原创作品转载请注明出处 + 《Linux内核分析》MOOC课程http://mooc.study.163.com/course/USTC-1000029000

 

  1. 题目自拟,内容围绕对Linux内核如何装载和启动一个可执行程序

  2. 可以结合实验截图、ELF可执行文件格式、用户态的相关代码等

  3. 博客内容中需要仔细分析新可执行程序的执行起点及对应的堆栈状态等

  4. 总结部分需要阐明自己对“Linux内核装载和启动一个可执行程序”的理解

实验报告:

 

  1. 理解编译链接的过程和ELF可执行文件格式;

    1. C代码——预处理——汇编代码——目标代码——可执行文件
    2. gcc -E hello.c -o hello.i

       gcc –hello.i –hello.s
      gcc –hello.s –hello.o

    1. ELF可执行文件格式
    2. 技术分享
    3. 预处理负责把include的文件包含进来及宏替换工作。 hello和hello.o都是ELF格式的文件
    4. ELF是一个可重定位(relocatable)文件保存着代码和适当的数据,用来和其他的object文件一起来创建一个可执行文件或者是一个共享文件
  2. 编程使用exec*库函数加载一个可执行文件,动态链接分为可执行程序装载时动态链接和运行时动态链接,编程练习动态链接库的这两种使用方式;

    1. 装载时动态链接
    2. 运行时动态链接
  3. 使用gdb跟踪分析一个execve系统调用内核处理函数sys_execve ,验证您对Linux系统加载可执行程序所需处理过程的理解,详细内容参考本周第三节;

  4. 特别关注新的可执行程序是从哪里开始执行的?为什么execve系统调用返回后新的可执行程序能顺利执行?对于静态链接的可执行程序和动态链接的可执行程序execve系统调用返回时会有什么不同?

实验七:Linux内核如何装载和启动一个可执行程序

标签:

原文地址:http://www.cnblogs.com/ailx10/p/5373424.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!