操作系统作业1

第四章

1.

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

        两进程都只使用CPU,不发起I/O请求

        进程状态用下表表示:

        每一时刻都有进程运行,因此CPU利用率为100%。

2.

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

        一个进程有4个需要CPU完成的指令,另一个进程只发出一次I/O请求

        进程状态如下表:

        进程完成需要的时间与I/O等待完成需要的时间有关,若设这个时间为t0,则两个进程需要的时间t=4+t0+2。(表中假设t0为5个单位时间,两进程所需时间为11)

3.

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

        两进程与题2中相同,交换顺序

        进程状态如下表:

                当第一个进程发起I/O进入阻塞状态后,第二个进程开始运行,运行完成且I/O完成后第一个进程运行。与题2中相比,两个进程需要7个单位时间就可以完成。(2)中进程一先运行完成,进程二发出I/O请求并阻塞时,CPU为空闲状态,本题中交换运行顺序后,进程一阻塞时,进程二使用CPU,比题2中CPU利用率高,所需时间也更短。

4.

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

       两进程与题3中相同,顺序也相同,但进程0发起I/O时不切换到进程1运行,则运行情况如下表:

        如果系统不进行进程切换,两进程完成时间与题2中相同,交换顺序不对运行时间产生影响。

5.

        等待I/O时切换到另一个进程,运行情况与(3)中相同。如下表:

第五章

1.

        子进程与父进程中变量的值相同

        子进程与父进程同时改变x的值,不会互相影响。

2.

       使用如下代码,让父进程和子进程都访问文件描述符并写入文件。

      


       结果如下,即两进程都可以访问文件描述符,写入的是子进程的内容。

4.

       查看exec()的变体

        参数可以单独传入,也可以按数组的方式传入,并可以传入环境变量,路径,可执行文件名。

        调用execl():

        调用execv(),:

      

       其他形式的调用:

       多种exec()调用的参数传递方式不同,方便以不同的形式使用。

第七章

1.


       SJF调度与FIFO调度结果相同,情况如下

       平均响应时间为200,平均周转时间为400

2.

       SJF调度与FIFO调度结果相同,情况如下

        平均响应时间为133.3,平均周转时间为333.3

3.

       采用RR方式,时间片为1,则

      

       平均响应时间为1,平均周转时间为599

4.

       当作业长度相同时,SJF调度的情况与FIFO相同,因此有相同的周转时间。

5.

       当作业长度均相同,且长度等于RR时间片的长度时,SJF调度与RR调度情况相同,有相同的响应时间。

6.

       使用如下python程序,假设有三个作业需要调度,长度递增,绘制平均长度和平均响应时间图

        响应时间随工作长度的增加而增加

7.

     使用时间片为t的RR,N个工作的响应时间为0,t,2t,3t,4t….。平均响应时间为(t+2t+3t+…+(n-1)t)/n=(n-1)t/2,随着量子长度的增加,RR的响应时间也会增加。最坏情况即最后一个工作的响应时间为(n-1)t。

第八章.

1.

       设置两个工作和两个队列,限制作业长度小于100,关闭I/O

        工作长度为84,42,时间片为10,执行记录为:

        平均响应时间为5,平均周转时间为109

        更换种子,两工作两队列,关闭I/O

        工作长度为14,76,时间片为10,执行记录为:

        平均响应时间为5,平均周转时间为69

3.

        当工作在同一队列时,进行轮转调度工作,因此只需要将mlfq调度的队列数设置为1,mlfq调度以轮转调度的方式工作。

5.

       每隔200ms将所有任务提高至最高优先级,这样能使这个长时间运行的工作至少在200ms内能够轮转一个时间片10ms,即至少占用5%的CPU。

第九章

1.

随机种子为1:

        模拟运行情况如下:

       随机种子为2:

       模拟运行情况如下:

       随机种子为3:

        模拟运行情况如下:

2.

       两个工作长度相同,份额为1:100

        模拟运行情况

       彩票数量的极大不平衡导致了持有份额小的工作几乎不占用cpu运行,在工作1完成之前工作0没有运行过。这种情况下,持有份额小的工作响应时间很长,而且如果还有其他工作存在并一直占用cou,这个份额小的工作可能会饿死。

3.

       使用不同的种子运行两个相同的工作,统计结果如下:

        提前完成的工作所用时间平均比后完成的快了8左右,对比工作长度只能保证基本接近公平,假设以提前完成时间比工作长度为指标,不公平度约为8.5%。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值