2024-2025-1 20242828 《Linux内核原理与分析》第七周作业
分析 Linux 内核创建一个新进程的过程
实验内容
-
阅读理解 task_struct 数据结构 https://github.com/torvalds/linux/blob/v3.18-rc6/include/linux/sched.h#L1235;
-
分析 fork 函数对应的内核处理过程 sys_clone,理解创建一个新进程如何创建和修改 task_struct 数据结构;
-
使用 gdb 跟踪分析一个 fork 系统调用内核处理函数 sys_clone ,验证您对 Linux 系统创建一个新进程的理解,推荐在实验楼 Linux 虚拟机环境下完成实验。
-
特别关注新进程是从哪里开始执行的?为什么从那里能顺利执行下去?即执行起点与内核堆栈如何保证一致。
fork():
- 它用于创建一个新的进程,称为子进程,而调用
fork
的进程称为父进程。 - 这个新创建的子进程是父进程的副本,拥有相同的代码和几乎相同的内存,但有自己独立的执行路径。
实验步骤:
1、打开实验楼的虚拟机,进入LinuxKernrl,删除原有的menu,重新克隆menu
git clone http://github.com/mengning/menu.git