2022-2023-1 20222815《Linux内核原理与分析》第七周作业

实验六-分析Linux内核创建一个新进程的过程

一.实验要求

1.更新内核并增添fork命令
2.跟踪分析进程创建的过程

进程创建分析:fork代码分析
dup_task_struct分析
copy_thread分析
copy_process分析

二.实验步骤

1.更新内核并增添fork命令:
首先要删除原有的menu,在github上下载新版本menu

cd ~/LinuxKernel

rm menu -rf

git clone https://github.com/mengning/menu.git

 向MenuOS中增加fork命令

cd menu

mv test_fork.c test.c

make rootfs

使用help查看现有命令,执行MenuOS>>fork 

2.启动gdb调试,并对主要的函数设置断点

(gdb)b sys_clone

(gdb)b do_fork

(gdb)b dup_task_struct

(gdb)b copy_process

(gdb)b copy_thread

(gdb)b ret_from_fork 

 

三、实验总结

 在 Linux 内核中,供用户创建进程的系统调用fork()函数的响应函数是 sys_fork()、sys_clone()、sys_vfork(),这三个函数都是通过调用内核函数 do_fork() 来实现的。根据调用时所使用的 clone_flags 参数不同,do_fork() 函数完成的工作也各异。copy_process()主要完成进程数据结构,各种资源的初始化,调用了sched_fork,将其置为TASK_RUNNING。copy_thread函数主要用于获取子进程寄存器信息的存放位置,并对子进程的thread.sp赋值,将来子进程运行,这就是子进程的esp寄存器的值。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值