作业信息
这个作业属于哪个课程 | <2020-2021-1Linux内核原理与分析)> |
---|---|
这个作业要求在哪里 | https://edu.cnblogs.com/campus/besti/2020-2021-1LKPA/homework/11266 |
这个作业的目标 | 在MenuOS里添加一个fork命令,并进行跟踪分析 |
作业正文 | https://www.cnblogs.com/bestYZF/p/14021170.html |
- 在MenuOS里添加一个fork命令
使用以下命令:
cd ~/LinuxKernel
rm menu -rf
git clone https://github.com/mengning/menu.git
cd menu
mv test_fork.c test.c
make rootfs
2.使用GDB跟踪分析
在sys_clone、do_fork、dup_task_struct、copy_process、copy_thread、ret_from_fork等处设置断点,然后跟踪这个过程。
3.函数分析
do_fork()主要完成调用copy_process()复制父进程信息、获得pid、调用wake_up_new_task将子进程加入调度器队列等待获得分配cpu资源运行、通过clone_flags标志做一些辅助工作。dup_task_struct函数为子进程分配好内核栈,copy_thread完成内核栈关键信息初始化,ret_from_fork返回用户态进程。