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
学习时间 66分钟
操作时间 18分钟
按键次数 356次
实验次数 2次
报告字数 1320字
是否完成 完成