操作系统导论-课后作业-ch4

发布时间:2024年01月06日

对应异步社区资源HW-CPU-Intro

1.

运行

./process-run.py -l 5:100,5:100

结果如下图所示
在这里插入图片描述
5代表运行5条cpu指令,而100表示100%为cpu运行的指令。由于不涉及任何的IO,最终cpu利用率为100%
在这里插入图片描述

2.

运行

./process-run.py -l 4:100,1:0

结果如下图所示
在这里插入图片描述
可见有4条cpu指令和1条占用io的指令,运行时间如下:
在这里插入图片描述
可见默认运行一条IO指令所用的时间默认为5倍的普通指令,共需要10个ticks

3.

交换顺序后运行结果如下:
在这里插入图片描述
由于IO进程转为WAITING状态,调度后CPU程序会运行,故只需要6个ticks即可执行完成:
在这里插入图片描述

4.

在这里插入图片描述
这个标志代表的调度策略是只有当当前这个进程结束后调度器才会开始调度,故就算当前进程进入WAITING状态调度器也不会调度故一直在等待。

5.

在这里插入图片描述
这种策略就是IO也会进行调度,比较合理,并且我测试了一下这样的策略当当前进程结束依然能够调度:
在这里插入图片描述

6.

运行结果如下:
在这里插入图片描述
这种情况下,当IO进程也就是图中的pid0从WAITING状态下转换到READY时也就是io结束后,在调度队列中显然排在后面,这也就导致先运行了其他的进程,导致最后要等待IO,系统资源未能有效利用。(其实需要一种判定机制来确定是否需要IO)

7.

在这里插入图片描述
这种模式下,IO进程IO结束后判定为立即调度,也就是认为当前进程很有可能再次IO,把它以抢占式的方式立即运行,cpu和io的利用率会更好。

8.

由于无法判定随机判定哪个进程可能涉及IO,所以这几种调度策略各有好坏。

文章来源:https://blog.csdn.net/weixin_43917399/article/details/135419497
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。