当前位置: 首页 > article >正文

操作系统作业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%。


http://www.kler.cn/a/6271.html

相关文章:

  • 蓝桥杯速成教程{三}(adc,i2c,uart)
  • 2024年前端工程师总结
  • 如何快速找到合适的科学问题
  • 书签管理工具的使用技巧
  • Java 面试合集(2024版)
  • 菜鸟带新鸟——基于EPlan2022的部件库制作(3D)
  • MongoDB - 索引知识
  • 众人围剿,GPT-5招惹了谁
  • 深入学习Redis:持久化
  • 决策树鸢尾花算法讲解
  • 蓝桥杯倒计时 | 倒计时10天
  • 3.30--Redis之常用数据结构--listpack(总结篇)------加油呀
  • 第十四届蓝桥杯大赛——真题训练第10天
  • STM32实验:串口接受和发送消息
  • MongoDB - 数据模型的设计模式
  • DDoS攻击原理,DDoS攻击怎么防护?
  • Nginx解决跨域问题(前端服务器,接口服务器)记录
  • Python 自动化指南(繁琐工作自动化)第二版:一、PYTHON 基础知识
  • 【群晖Drive私有云】利用cpolar内网穿透实现公网远程群晖Drive
  • for循环内线程池并发执行任务,等到子线程全部处理完任务,主线程在执行java的实现方式
  • c# 第一次作业
  • IU5706E低静态电流,同步升压直流-直流控制器
  • CSDN——Markdown编辑器——官方指导
  • 如果觉得上面太正式,请看小红书风格的“从数字化转型到智能化转型”
  • 二叉树全分析(超详细总结建议收藏)
  • ServletAPI详解(二)-HttpServlet类