分析Linux内核创建一个新进程的过程
2019/10/28 18:34:58
笔记部分
- 首先是查看进程描述符(用来描述进程,其代码比较庞大)的一些内容
-
系统调用回顾
fork、vfork、clone三个系统调用都可以创建一个新进程,而且都通过do_fork来实现进程。Linux通过复制父进程来创建新的进程,并设置pid,在thread中设置eip,esp。
- 浏览创建进程的相关代码
实验部分
- 跟踪内核中fork函数的处理过程
- 首先删除menu,并且clone一个新的,然后覆盖掉test.c文件,以不受前面实验的影响,然后进行编译。
- 利用help命令查看,发现多了一个fork函数,执行后会创建一个子进程,可以看到父进程和子进程都输出信息了。
- 开始调试,加载内核,加载内核符号表并连接。
- 设置断点,依次停在do_fork,copy_process,dup_task_struct,copy_thread,ret_from_fork,直到sys_call无法再跟踪