2019-2020-1 20199328《Linux内核原理与分析》第七周作业

分析Linux内核创建一个新进程的过程

2019/10/28 18:34:58

笔记部分

  • 首先是查看进程描述符(用来描述进程,其代码比较庞大)的一些内容

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第1张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第2张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第3张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第4张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第5张图片

  • 系统调用回顾

    fork、vfork、clone三个系统调用都可以创建一个新进程,而且都通过do_fork来实现进程。Linux通过复制父进程来创建新的进程,并设置pid,在thread中设置eip,esp。

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第6张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第7张图片

  • 浏览创建进程的相关代码

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第8张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第9张图片

实验部分

- 跟踪内核中fork函数的处理过程

  1. 首先删除menu,并且clone一个新的,然后覆盖掉test.c文件,以不受前面实验的影响,然后进行编译。
  2. 利用help命令查看,发现多了一个fork函数,执行后会创建一个子进程,可以看到父进程和子进程都输出信息了。
  3. 开始调试,加载内核,加载内核符号表并连接。
  4. 设置断点,依次停在do_fork,copy_process,dup_task_struct,copy_thread,ret_from_fork,直到sys_call无法再跟踪

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第10张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第11张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第12张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第13张图片

2019-2020-1 20199328《Linux内核原理与分析》第七周作业_第14张图片

你可能感兴趣的:(2019-2020-1 20199328《Linux内核原理与分析》第七周作业)