Linux 0.11进程运行轨迹的跟踪,进程运行轨迹的跟踪与统计

1,到内核init/main.c下修改信息:(cd/oslab/oslab/linux-0.11/init)

2,向kernel/printk.c中添加打印日志的功能

注意,是在源文件下增加代码:

09e87fd381535da74c24e88ce7a16f12.png

3,寻找进程切换点

3.1新建(N)状态的切换点,

在kernel/fork.c修改内容:(注意看增加的地方)

cac0a7791fad1e35c9b475d340c8f6dd.png

3.2 就绪(J)状态

(1)在此处为准备完毕的时候

(2)另一个就绪状态是在schedule()函数中

位置kernel/sched.c

c77b0020302331895461881ac0288d08.png

(3)进程时间片到期。位置kernel/sched.c

(4)转到就绪态,在sleep_on()中

位置kernel/sched.c

5)在interruptible_sleep_on()中,位置kernel/sched.c

(6)在wake_up()中。唤醒不可中断

位置kernel/sched.c

237259f0564abfa1024c104f9eb525c9.png

5d288929428bbc487d6e8026c204dcb6.png

运行(R)状态

(3)进程时间片到期”已经修改

3.4 睡眠(W)状态:运行到睡眠依靠的是sleep_on()和interruptible_sleep_on(),还有进程主动睡觉的系统调用sys_pause()和sys_waitpid();

(1)sys_pause()

位置kernel/sched.c

2)sleep_on()

(3)interruptible_sleep_on()

(4)在exit.c中的sys_waitpid()中

传进根目录的方法:

考入文件

$ sudo umount hdc

$ sudo ./mount-hdc

编译并运行process.c

fe46ff3dcd9656ec208c4c9a58a4d552.png

2cfddb7a32988c8ba3996b348b09d308.png

f517167dd38a8a9da700d0ec0ff46076.png

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值