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

操作系统概念第五章部分作业题答案题目一:为什么对调度程序而言,区分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类。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

发表回复

您的电子邮箱地址不会被公开。

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