“操作系统原理与实践(南阳理工学院)”实验报告

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

1,到内核init/main.c下修改信息:(cd/oslab/oslab/linux-0.11/init) 2,向kernel/printk.c中添加打印日志的功能

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

图片描述 3,寻找进程切换点

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

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

图片描述 3.2 就绪(J)状态

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

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

位置kernel/sched.c

图片描述

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

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

位置kernel/sched.c 5)在interruptible_sleep_on()中,位置kernel/sched.c (6)在wake_up()中。唤醒不可中断

位置kernel/sched.c 图片描述

图片描述

运行(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

图片描述

图片描述

图片描述

最新评论
暂无评论~