贵州大学计算机科学与技术学院《操作系统》第 05 章习题解析
1. ( B )有利于 CPU 密集型的作业,不利于 I/O 密集型的作业。
A、时间片轮转调度算法
B、先来先服务调度算法
C、短作业优先调度算法
D、优先级调度算法
2. 下列( A )调度算法对短进程不利。
A、先来先服务(FCFS)
B、时间片轮转(RR)
C、短作业优先(SJF)
D、最高相应比优先(HRRN)
【解析】
长进程后的短进程因为需要按顺序使用 CPU,所以需要等待很久。
3. 下列( A )调度算法的开销比较小。
A、先来先服务(FCFS)
B、短作业优先(SJF)
C、多级反馈队列(Feedback)
D、最高响应比优先(HRRN)
【解析】
先来先服务算法按照进程的先后顺序使用 CPU,不存在抢占,上下文切换少,
调度开销最小。
4. 下列调度算法中,不可能导致饥饿现象的是( A )。
A、时间片轮转
B、静态优先数调度
C、非抢占式短作业优先
D、抢占式短作业优先
5. 为了照顾紧迫型作业,应采用( D )。
A、先来服务调度算法
B、短作业优先调度算法
C、时间片轮转调度算法
D、优先权调度算法
6. 下列选项中,满足短作业优先且不会发生饥饿现象的是( B )调度算法。
A. 先来先服务
B. 高响应比优先
C. 时间片轮转
D. 非抢占式短作业优先
【解析】
响应比=(等待时间+执行时间)/执行时间。高响应比优先算法在等待时间相
同的情况下,作业执行时间越短,响应比越高,满足短任务优先。随着长作业
等待时间的增加,响应比会变大,执行机会也会增大,因此不会发生饥饿现
象。先来先服务和时间片轮转不符合短任务优先,非抢占式短任务优先会产生
饥饿现象。
7. 下列进程调度算法中,综合考虑进程等待时间和执行时间的是( D )。
A、时间片轮转调度算法
B、短进程优先调度算法
C、先来先服务调度算法
D、高响应比优先调度算法
8. 分时系统中进程调度算法通常采用 ( B )。
A、响应比高者优先
B、时间片轮转法
C、先来先服务
D、短作业优先
9. 在非抢占式系统中,发生一个进程从就绪态——>运行态状态变迁的可能原因是( A )。
A、另一个进程从运行态——>就绪态
B、另一个进程从等待态——>就绪态
C、一个新的进程被创建
10. 从就绪队列中选一个进程获得 CPU 的控制权由( C )来完成。
A、中断处理程序
B、排队程序
C、分派程序
11. 操作系统中调度算法是核心算法之一,下列关于调度算法的论述中正确的是( D )。
A、先来先服务调度算法对即对长作业有利也对短作业有利
B、时间片轮转调度算法只对长作业有利
C、实时调度算法也要考虑作业的长短问题
D、高响应比优先调度算法既有利于短作业又兼顾长作业
12. 在使用基于优先数的不可抢占进程调度算法的系统中,不会引起进程切换的事件是( D )。
A、进程运行完成
B、进程运行过程中变为等待状态
C、时间片到
D、有一个优先级高的进程就绪
13. 某系统采用静态抢占式优先级进程调度算法(优先数大者优先级高)。A 进程0 时刻到达,优先数为 5,需运行 10s;B 进程 3 时刻到达,优先数为 7,需运行 5s;C 进程 5 时刻到达,优先数为 8,需运行 3 s,则 CPU 的服务
顺序为( B )。
A、A->B->C->A
B、A->B->C->B->A
C、A->B->A->C
D、A->B->C->A->B
14. 在多道程序设计系统中,有三个作业 J1、J2、J3 到达时间依次为 8:00、8:30、9:00,它们需计算的时间分别为 2 小时,1 小时和 0.5 小时。系统采用响应比高者优先调度算法在 10:00 开始选择作业,作业被选中的次序应该是( B )。
A、J1、J2、J3
B、J3、J2、J1
C、J2、J1、J3
D、J1、J3、J2
15. 设有四个进程,它们的到达时刻和处理时间如下所示:
进程 到达时刻 处理时间
P1 0 50
P2 10 30
P3 30 10
P4 50 10
采用高响应比优先(HRRN)调度算法在时刻 50 进行调度,选中的进程是( C )。
A、P1
B、P2
C、P3
D、P4
【解析】
HRRN 中响应比为周转时间/处理时间(1+等待时间/处理时间)
时刻 50 时:
响应比:P1:2 P2:7/3 P3:3 P4:1 所以选中 P3
16. 当进程调度采用优先级调度算法时,通常应提高( A )进程的优先级。
A、在就绪队列中等待时间长的
B、连续占用处理器时间长的
C、以计算为主的
D、用户
17. Windows 线程调度算法中,为了解决饥饿、改善系统吞吐量及响应时间等整体特征,会临时提升一些线程的优先级。下列( B )类线程 Windows 调度不会提升其优先级。
A、I/O 结束后被唤醒的线程
B、运行完时间配额的线程
C、由于窗口活动而被唤醒的窗口线程
D、在就绪队列中等待时间超时的线程
18. 若进程 P 一旦被唤醒就能投入运行,系统可能为( D )。
A、分时系统,进程 P 的优先级最高
B、抢占调度方式,就绪队列上的所有进程的优先级皆比 P 的低
C、就绪队列为空队列
D、抢占调度方式,P 的优先级高于当前运行的进程
19. 下列进程调度算法中,( A )可能会出现进程长期得不到调度的情况。
A、静态优先权法
B、抢占式调度中采用动态优先权算法
C、分时处理中的时间片轮转调度算法
D、非抢占式调度中采用 FCFS 算法
20. 一个作业被调度进入内存后其进程被调度进入 CPU 运行,在执行一段指令
后,进程请求打印输出,此间该进程的状态变化是( C )
A、运行态-就绪态-等待态
B、等待态-就绪态-运行态
C、就绪态-运行态-等待态
D、就绪态-等待态-运行态
【主观题】
1. 讨论以下各对调度标准在某种背景下会有的冲突。
a. CPU 利用率和响应时间
b. 平均周转时间和最大等待时间
c. I/O 设备利用率和 CPU 利用率
答:a. CPU 利用率和响应时间:当经常性的上下文切换减少到最低时,CPU 利
用率增加。通过减少使用上下文切换程序来降低经常性的上下文切换。但这样可
能会导致进程响应时间的增加。
b.平均周转时间和最大等待时间:通过最先执行最短任务可以使平均周转时间最
短。然而,这种调度策略可能会使长时间运行的任务永远得不到调度且会增加他
们的等待时间。
c. I/O 设备利用率和 CPU 利用率:CPU 利用率的最大化可以通过长时间运行
CPU 限制任务和同时不实行上下文切换。I/O 设备利用率的最大化可以通过尽
可能调度已经准备好的 I/O 限制的任务。因此,导致上下文切换 。
2. 考虑下面的基于动态改变优先级的可抢占式优先权调度算法。大的优先权数
代表高优先权。当一个进程在等待 CPU 时(在就绪队列中,但未执行),优
先权以α速率改变;当它运行时,优先权以速率β改变。所有的进程在进入就
绪队列时被给定优先权为 0。参数α 和β可以设定给许多不同的调度算法。
a. β>α>0 时所得的是什么算法?
b. α<β<0 时所得的是什么算法?
答:a. FCFS 先来先服务,假设初入进程优先数都为 10,α=1,β=2,一个周期
后,就绪进程优先数会变成 11,之后依次增长,所以后到进程的 PCB 将排在就
绪队列末尾;另一方面,当 CPU 选中进程 Pi 执行时(假设 Pi 优先数为 15 是当
前最大值,Pi 是等待最久最先进入就绪队列的进程),一个周期过后,它的优先
值将变成 17,其提升速度会比就绪队列的队头更快,因而永远不可能被抢占,
会一直做完。
b. LIFO 后入先出,初入进程优先数都为 0,α=-2,β=-1,一个周期后,就绪
进程优先数会变成-2,执行进程变成-1,以此类推,就绪进程不会抢占执行进程;
但是如果有新到进程(初始优先数为 0),它将抢占当前进程(优先数为负数)的
CPU,因此最终能够得以完成的,会是当前最晚到达的进程。
3. 传统 UNIX 调度在优先数和优先级间成反比关系:数字越高,优先权越低。
该调度进程利用下面的方程重新计算进程的优先权一次一秒:优先权= (最
近 CPU 使用率/ 2 )+基本数,基本数= 60,最近的 CPU 使用率是指一个
表明优先权从上一次重新计算后开始进程被 CPU 使用的情况。假设最近进
程 p1 的 CPU 使用率是 40 个,p2 是 18 ,p3 是 10。当优先权重新计算
后这三个进程的新的优先权是什么?在此信息的基础上,传统 UNIX 的调度
会不会提高或降低 CPU 限制的进程的相对优先权?
答:分配给这些进程的优先权分别是 80,69 和 65。
这调度降低了 CPU 限制的进程的相对优先权。
4. 假设系统中有 5 个进程,已知其到达时间和服务时间,忽略 I/O 及其他开
销,分别按照先来先服务算法、非抢占的短进程优先调度算法、时间片轮转
法(每个时间片设置为 1,同一时刻运行转就绪的进程排在新到达进程之后)
对这 5 个进程实施调度,请填写下面的表格,计算按照每种调度算法实施调
度时,各个进程的开始时间、完成时间、周转时间和带权周转时间。
1) 先来先服务算法
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 平均周转时间 |
A | 0 | 3 | 0 | 3 | 3 | 1 |
B | 2 | 6 | 3 | 9 | 7 | 7/6 |
C | 4 | 4 | 9 | 13 | 9 | 9/4 |
D | 6 | 5 | 13 | 18 | 12 | 12/5 |
E | 8 | 2 | 18 | 20 | 12 | 6 |
2) 非抢占的短进程优先调度算法
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 平均周转时间 |
A | 0 | 3 | 0 | 3 | 3 | 1 |
B | 2 | 6 | 3 | 9 | 7 | 7/6 |
C | 4 | 4 | 11 | 15 | 11 | 11/4 |
D | 6 | 5 | 15 | 20 | 14 | 14/6 |
E | 8 | 2 | 9 | 11 | 3 | 3/2 |
3) 时间片轮转法(注:同一时刻运行转就绪的进程排在新到达进程之后)
进程名 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 平均周转时间 |
A | 0 | 3 | 0 | 4 | 4 | 4/3 |
B | 2 | 6 | 2 | 18 | 16 | 16/6 |
C | 4 | 4 | 4 | 17 | 13 | 13/4 |
D | 6 | 5 | 7 | 20 | 14 | 14/5 |
E | 8 | 2 | 10 | 15 | 7 | 7/2 |
5. 下面的进程采用抢占轮转调度,每个进程都分配一个优先级数值,更大数值
表示更高优先级。除这些进程外,系统还有一个空闲任务 Pidle(它不消耗
CPU 资源),这个任务的优先级为 0;当系统没有其他可运行进程时,其将
被调度运行。时间片长度为 10 个时间单位。如果一个进程被更高优先级的
进程抢占,它会添加到队列的最后。
① 请填写下面的表格,计算各个进程的开始时间、完成时间、周转时间和等待
时间。
解:
① 甘特图如下:
P1 | P2 | P3 | P2 | P3 | P4 | P2 | P3 | P5 | P6 | P6 | ||
20 | 25 | 35 | 45 | 55 | 60 | 75 | 80 | 90 | 100 | 105 | 115 | 120 |
进程 | 优先级 | 到达时间 | 服务时间 | 开始时间 | 完成时间 | 周转时间 | 等待时间 |
p1 | 40 | 20 | 0 | 0 | 20 | 20 | 4/3 |
p2 | 30 | 25 | 25 | 25 | 80 | 55 | 30 |
p3 | 30 | 25 | 30 | 35 | 90 | 60 | 35 |
p4 | 35 | 15 | 60 | 60 | 75 | 15 | 0 |
p5 | 5 | 5 | 10 | 100 | 120 | 20 | 10 |
p6 | 10 | 10 | 105 | 105 | 115 | 10 | 0 |
② 请计算 CPU 的利用率是多少?
CPU 利用率=(CPU 忙的时间/系统总时间)*100%
=(20+25+25+15+10+10)/120=105/120=87.5%
资料来自老师课件!!!