Hit-oslab lab3 report

源代码在github库:

https://github.com/Focus5679/hit-oslab

1.编写process.c文件

参考:

https://www.cnblogs.com/dongguolei/p/8086346.html  //fork的使用

https://www.cnblogs.com/LUO77/p/5804436.html  //wait/waitpid的使用

2.在/init/main.c中添加建立日志的代码语句

参考:main.c

3.在/kernerl/printk.c中添加fprintk函数

参考:printk.c

4.在多个系统文件中找到进程切换的语句,并添加相应的日志记录语句。

fork.c:

copy_process()函数    //1.创建进程2.使进程进入就绪状态。

sched.c:

schedule()函数    //1.检测alarm,从可中断睡眠状态->就绪状态

//2.选出运行时间短的进程运行,从就绪状态->运行状态

//3.将正在运行的进程替换,从运行状态->就绪状态

sys_pause()函数    //将进程从运行的进程进入可中断睡眠,从运行状态->睡眠状态

sleep_on()函数    //1.将进程从运行的进程进入不可中断睡眠,从运行状态->睡眠状态

//2.唤醒队列中的睡眠进程,睡眠状态->就绪状态

interruptible_sleep_on()    //上同

wake_up()    //唤醒一个进程,睡眠状态->就绪状态

exit.c:

do_exit()函数    //程序退出,运行状态->退出状态

sys_waitpid()函数    //等待其他进程,运行状态->睡眠状态

5.将process.c拷贝到linux0.11下编译运行:(注意此处的main.c就是process.c 与系统中的main.c是不同的)

6.得到process.log文件,利用实验指导给出的python文件分析:

//时间片15

 

7.修改时间片:修改/include/linux/sched.h中的宏定义 #define INIT_TASK 第一行0,15,15 -> 0,30,30

8.重新编译内核,重复5-6步分析对比。

 

//时间片30

//时间片7

可以发现,时间片过长或过短都会导致进程的平均等待时间变长,同时我发现linux0.11的时间片设定也并不是可以兼顾各种使用场景的,我认为应该针对特定的使用场景进行特定的优化。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值