操作系统概念第五章部分作业题答案

操作系统概念第五章部分作业题答案题目一:为什么对调度程序而言,区分CPU约束性进程和I/O约束性进程很重要解答:绝大多数进程可分为I/O主(放入I/O队列)或CPU主(放入就绪队列),I/O主的计算时间>CPU主。因此长期调度程序应选择一个合理的包含I/O主和CPU主的组合进程。在运行I/O操作前,I/0限制的程序只运行很少数量的计算机操作。而CPU约束程序一般来使用很多的CPU。另一方面,CPU约束程序会利用整个时间片,…

大家好,又见面了,我是你们的朋友全栈君。

题目一:
为什么对调度程序而言,区分CPU约束性进程和I/O约束性进程很重要

解答:
绝大多数进程可分为I/O主(放入I/O队列)或CPU主(放入就绪队列),I/O主的计算时间>CPU主。因此长期调度程序应选择一个合理的包含I/O主和CPU主的组合进程。在运行I/O操作前,I/0限制的程序只运行很少数量的计算机操作。而CPU约束程序一般来使用很多的CPU。另一方面,CPU约束程序会利用整个时间片,且不做任何阻碍I/O操作的工作。

题目二:
下面哪种调度算法会导致饥饿?
1.先到先服务
2.最短作业优先
3.轮转法
4.优先级

解答:
最短作业优先和有限计算法能导致饥饿,因为对于优先级较低的作业来说,这两种算法都会使其无穷等待CPU,长期得不到调用,就会导致饥饿,也就是无穷阻塞问题。

题目三:
考虑一个运行 10 个 I/O 约束任务和 1 个 CPU 约束任务的系统,假设 I/O 约束任务每进行 1ms 的 CPU 计算执行一次 I/O 操作,每个 I/O 操作花费 10ms 完成。假设上下文切换花费 0.1ms, 且所有的进程都是长运行任务。请计算下列条件下 RR(时间片轮转)调度程序的 CPU利用率?
1.时间片为 1ms
2.时间片为 10ms

解答:
1、时间片为1ms时,无论哪个进程被调度,都会花费一次上下文切换的额外时间0.1ms,所以,对于一个时间片,实际时长为1.1ms,但只有1ms在“认真工作”,所以利用率为1/1.1×100%=92%。
2、时间片为10ms时,对I/O约束任务而言,还是进行1ms后就进行上下文切换,所以对于一个时间片,十个I/O约束任务都会走一遍,然后执行CPU约束任务,然后再转九次,每次相同。所以,从整体十次上来讲,总时间是10x(10×1.1<I/O约束任务>+10<CPU约束任务>),而实际的工作时间是10×20,所以利用率为20/21.1×100%=94%

题目四:
考虑下面一组进程,进程占用的CPU区间长度以毫秒计算:
进程 到达时间 CPU区间长度 优先级
P1 0 10 3
P2 1 3 1
P3 2 4 3
P4 3 1 4
P5 4 5 2
1.分别画出采用 FCFS,SJF,抢占式优先级调度(数值越小,优先级越大; 优先级相同时采用RR,时间片为 1ms),RR(时间片 =2ms)算法进行调度时的甘特图。
2.计算上述调度算法下的平均周转周转时间。
3.计算上述调度算法下的平均等待时间。

解答:
1、
FCFS:
在这里插入图片描述
SJF(非抢占):
在这里插入图片描述
SJF(抢占):
在这里插入图片描述
注意,对于长度相同的情况,我采用片长为1ms的RR
优先级:
在这里插入图片描述
RR:
在这里插入图片描述
2、
FCFS:P1=10,P2=13-1,P3=17-2,P4=18-3,P5=23-4,SUM=10+12+15+15+19=71,NUM=14.2
SJF(非抢占):P1=10,P2=14-1,P3=18-2,P4=11-3,P5=23-4,SUM=10+13+16+8+19=66,NUM=13.2
SJF(抢占):P1=23,P2=5-1,P3=9-2,P4=4-3,P5=14-4,SUM=23+4+7+1+10=45,NUM=9
优先级:P1=22,P2=4-1,P3=17-2,P4=23-3,P5=9-4,SUM=22+3+15+20+5=65,NUM=13
RR:P1=23,P2=12-1,P3=14-2,P4=9-3,P5=21-4,SUM=23+11+12+6+17=69,NUM=13.8
3、
FCFS:P1=0,P2=10-1,P3=13-2,P4=17-3,P5=18-4,SUM=9+11+14+14=48,NUM=9.6
SJF(非抢占):P1=0,P2=11-1,P3=14-2,P4=10-3,P5=18-4,SUM=10+12+7+14=43,NUM=8.6
SJF(抢占):P1=0+14-1,P2=1+4-3-1,P3=5-2,P4=3-3,P5=9-4,SUM=13+1+3+0+5=22,NUM=4.4
优先级:P1=0+9-1+11-10+13-12+15-14+17-16,P2=1-1,P3=10+12-11+14-13+16-15-2,P4=22-3,P5=4-4,SUM=12+0+11+19+0=42,NUM=8.4
RR:P1=13,P2=8,P3=8,P4=5,P5=12,SUM=46,NUM=9.2

题目五:
查找文献了解 solaris 的调度设计并对其进行详细阐述,并就其调度方案中的至少两个细节说明这样设计所带来的影响(好处)。

解答:
Solaris的内核线程调度(抢占、基于优先级、支持实时线程)
传统Solaris使用多对多模型,Solaris 9使用一对一模型。
Solaris按照优先级排序有4种调度类型:实时、系统、分时和交互,每种类型有不同的priority和调度算法。
Scheduler将特定类的priority转换为全局priority,再选择全局priority最高的线程来执行,直到该线程阻塞、用完time quantum或被更高priority的线程抢占。如果多个线程的priority相同,则采用循环队列。
Solaris 9引入2种新的调度类型:

  1. 固定优先级(fixed priority) – 线程的priority与time sharing类型范围相同,但不能动态调节。
  2. 公平共享(fair share) – 用CPU shares代替priority来做调度决策。
    CPU shares:表明可用CPU资源的权利,并被分配到一个project(进程集)。
    Time sharing类(默认调度类型)和Interactive类采用同样的调度策略(多级反馈队列),Priority和time quantum默认成反比。
    通常Interactive进程的priority更高,CPU-bound进程的priority更低。
    Interactive和time sharing类包括60个优先级,在其调度中:
    时间片到期(Time quantum expired)(i.e. 用完其time-quantum而未堵塞)的线程将被认为是CPU-intensive的,并被降低优先级。
    从睡眠中返回(Return from sleep)(e.g. 从等待I/O中返回)的线程优先级将被提高。
    System类专门保留给内核使用,用于运行内核进程。System进程一旦创建,其priority就不再改变。(在内核模式下运行的用户进程并不属于system类。)
    Real time类的进程具有最高priority,能在其他类型进程之前运行。通常只有少数进程属于real time类。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/159073.html原文链接:https://javaforall.net

(0)
上一篇 2022年7月14日 下午1:46
下一篇 2022年7月14日 下午1:46


相关推荐

  • mac navicat prenium 15.0.29 激活码[免费获取]

    (mac navicat prenium 15.0.29 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月21日
    92
  • ffprobe使用详解

    ffprobe使用详解自己应用的内容是 nbsp nbsp nbsp 查看 MP4 文件中 mdatbox 中的 h264 每个 slice 的内容 二进制 nbsp nbsp 命令为 nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp nbsp ffprobe exe nbsp show packets nbsp show data nbsp nbsp input mp4 nbsp nbsp gt nbsp c text11 txt nbsp nbsp nbsp nbsp nbsp 所有的 slice 如果想获得 I 帧就用 show frames

    2026年3月20日
    2
  • Oracle to_date()函数的用法介绍

    Oracle to_date()函数的用法介绍to_date()是Oracle数据库函数的代表函数之一,下文对Oracleto_date()函数的几种用法作了详细的介绍说明,需要的朋友可以参考下在Oracle数据库中,Oracleto_dat

    2022年7月2日
    29
  • 月之暗面推出万亿参数Kimi K2模型并开源MoE架构

    月之暗面推出万亿参数Kimi K2模型并开源MoE架构

    2026年3月12日
    2
  • MySQL的吞吐量

    MySQL的吞吐量MySQL 的 QPS 吞吐量或者说 TPS 与很多因素有关 例如 CPU 内存以及硬盘等 高性能 MySQL 第三版 1 5 小节对各个版本的 MySQL 进行了测试 其结果如下 测试机器测试机器 CiscoUCSC250 内存 384GB 存储引擎是 InnoDB 测试的数据集 2 5GBMySQL 的 bufferpool 设置为 4GB 从上面的数据看 最大 QPS 不到 8000 对于插

    2026年3月18日
    2
  • 孰能生巧

    孰能生巧

    2022年1月2日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号