二、综合应用题

2026 旧版 · 非 2027 主源 · 原书检索 · 文字用于定位,公式与图表请回原页核验 · 本次导入快照

## 二、综合应用题

01. 为什么说多级反馈队列调度算法能较好地满足各类用户的需要?

02. 将一组进程分为4类,如下图所示。各类进程之间采用优先级调度算法,而各类进程的内部采用时间片轮转调度算法。请简述 $\mathrm{P_1}, \mathrm{P_2}, \mathrm{P_3}, \mathrm{P_4}, \mathrm{P_5}, \mathrm{P_6}, \mathrm{P_7}, \mathrm{P_8}$ 进程的调度过程。


03. 有一个 CPU 和两台外设 $\mathrm{D}_1, \mathrm{D}_2$,且在能够实现抢占式优先级调度算法的多道程序环境中,同时进入优先级由高到低的 $\mathrm{P}_1, \mathrm{P}_2, \mathrm{P}_3$ 三个作业,每个作业的处理顺序和使用资源的时间如下:

$\mathrm{P_1}$:$\mathrm{D}_2$(30ms),CPU(10ms),$\mathrm{D}_1$(30ms),CPU(10ms)

$\mathrm{P_2}$:$\mathrm{D}_1$(20ms),CPU(20ms),$\mathrm{D}_2$(40ms)

$\mathrm{P_3}$:CPU(30ms),$\mathrm{D}_1$(20ms)

假设忽略不计其他辅助操作的时间,每个作业的周转时间 $T_{1}, T_{2}, T_{3}$ 分别为多少?CPU 和 $\mathrm{D}_{1}$ 的利用率各是多少?

04. 有三个作业 A, B, C,它们分别单独运行时的 CPU 和 I/O 占用时间如下图所示。


<!-- page: 95 -->



现在请考虑三个作业同时开始执行。系统中的资源有一个 CPU 和两台输入/输出设备( $\mathrm{I} / \mathrm{O}_1$  和  $\mathrm{I} / \mathrm{O}_2$ )同时运行。三个作业的优先级为 A 最高、B 次之、C 最低,一旦低优先级的进程开始占用 CPU 或 I/O 设备,高优先级进程也要等待到其结束后方可占用。

请回答下面的问题:

1)最早结束的作业是哪个?
2)最后结束的作业是哪个?
3)计算这段时间CPU的利用率(三个作业全部结束为止)。

05. 假定要在一台处理器上执行下表所示的作业,且假定这些作业在时刻 0 以 1,2,3,4,5 的顺序到达。说明分别使用 FCFS、RR(时间片 = 1)、SJF 及非剥夺式优先级调度算法时,这些作业的执行情况(优先级的高低顺序依次为 1 到 5)。

针对上述每种调度算法,给出平均周转时间和平均带权周转时间。

[tbl-13.md](tbl-13.md)

06. 有一个具有两道作业的批处理系统,作业调度采用短作业优先调度算法,进程调度采用抢占式优先级调度算法。作业的运行情况见下表,其中作业的优先数即进程的优先数,优先数越小,优先级越高。

[tbl-14.md](tbl-14.md)

1)列出所有作业进入内存的时间及结束的时间(以分为单位)。
2)计算平均周转时间。

07. 假设某计算机系统有 4 个进程,各进程的预计运行时间和到达就绪队列的时刻见下表(相对时间,单位为“时间配额”)。试用可抢占式短进程优先调度算法和时间片轮转调度算法进行调度(时间配额为 2)。分别计算各个进程的调度次序及平均周转时间。

[tbl-15.md](tbl-15.md)

08. 假设一个计算机系统具有如下性能特征:处理一次中断平均需要  $500\mu \mathrm{s}$ ,一次进程调度平均需要花费 1ms,进程的切换平均需要花费 2ms。若该计算机系统的定时器每秒发出


<!-- page: 96 -->

120 次时钟中断,忽略其他 I/O 中断的影响,请问:

1)操作系统将百分之几的 CPU 时间分配给时钟中断处理程序?
2)若系统采用时间片轮转调度算法,24 个时钟中断为一个时间片,操作系统每进行一次进程的切换,需要花费百分之几的 CPU 时间?
3)根据上述结果,说明为了提高 CPU 的使用效率,可以采用什么对策。

09. 设有 4 个作业 $\mathrm{J}_1, \mathrm{J}_2, \mathrm{J}_3, \mathrm{J}_4$,它们的到达时间和计算时间见下表。若这 4 个作业在一台处理器上按单道方式运行,采用高响应比优先调度算法,试写出各作业的执行顺序、各作业的周转时间及平均周转时间。

[tbl-16.md](tbl-16.md)

10. 在一个有两道作业的批处理系统中,有一作业序列,其到达时间及估计运行时间见下表。系统作业采用最高响应比优先调度算法[响应比 = (等待时间 + 估计运行时间)/估计运行时间]。进程的调度采用短进程优先的抢占式调度算法。

[tbl-17.md](tbl-17.md)

1)列出各作业的执行时间,即列出每个作业运行的时间片段,如作业 $i$ 的运行时间序列为 $10:00 - 10:40$,$11:00 - 11:20$,$11:30 - 11:50$ 结束。
2)计算这批作业的平均周转时间。

11. 【2016 统考真题】某个进程调度程序采用基于优先数(priority)的调度策略,即选择优先数最小的进程运行,进程创建时由用户指定一个 nice 作为静态优先数。为了动态调整优先数,引入运行时间 cpuTime 和等待时间 waitTime,初值均为 0。进程处于执行态时,cpuTime 定时加 1,且 waitTime 置 0;进程处于就绪态时,cpuTime 置 0,waitTime 定时加 1。请回答下列问题:

1)若调度程序只将 nice 的值作为进程的优先数,即 priority = nice,则可能出现饥饿现象。为什么?
2)使用 nice, cpuTime 和 waitTime 设计一种动态优先数计算方法,以避免产生饥饿现象,并说明 waitTime 的作用。

## 2.2.9 答案与解析

### 一、单项选择题

#### 01. D

中级调度的主要目的是节省内存,将内存中处于阻塞态或长期不运行的进程挂起到外存,从而腾出空间给其他进程使用。当这些进程重新具备运行条件时,再从外存调入内存,恢复运行。

#### 02. C

进程从创建态转换到就绪态是由高级调度完成的。高级调度(作业调度)的主要任务是从后备队列中选择一个或一批作业,为其创建 PCB,分配内存等其他资源,并将其插入就绪队列。


<!-- page: 97 -->

03. B

设计调度算法时应考虑的指标有很多,比较常见的有公平性、资源利用率、平均周转时间、平均等待时间、平均响应时间。互斥性不是调度算法设计时需要考虑的指标,而是一种同步机制,用来保证多个进程访问临界资源时不会发生冲突。公众号:小兔网盘免费分享无水印PDF

04. A

时间片轮转的主要目的是,使得多个交互的用户能够得到及时响应,使得每个用户以为“独占”计算机的使用,因此它并没有偏好,也不会对特殊进程做特殊服务。时间片轮转增加了系统开销,所以不会使得系统高效运转,吞吐量和周转时间均不如批处理。但其较快速的响应时间使得用户能够与计算机进行交互,改善了人机环境,满足用户需求。

05. C

进程调度的时机与进程特点有关,如进程是CPU繁忙型还是I/O繁忙型、自身的优先级等。但仅有这些特点是不够的,能否得到调度还取决于进程调度策略,若采用优先级调度算法,则进程的优先级才起作用。至于占用处理器运行时间的长短,则要看进程自身,若进程是I/O繁忙型,运行过程中要频繁访问I/O端口,即可能频繁放弃CPU,所以占用CPU的时间不会长,一旦放弃CPU,则必须等待下次调度。若进程是CPU繁忙型,则一旦占有CPU,就可能运行很长时间,但运行时间还取决于进程调度策略,大部分情况下,交互式系统为改善用户的响应时间,大多数采用时间片轮转算法,这种算法在进程占用CPU达到一定时间后,会强制将其换下,以保证其他进程的CPU使用权。因此选择选项C。

06. D

处于临界区的进程也可能因中断或抢占而导致调度。此外,若进程在临界区内请求的是一个需要等待的资源,比如打印机,则它主动放弃CPU,让其他进程运行。

07. C

当一个进程被执行时,CPU的所有寄存器中的值(进程的现场信息)、进程的状态和控制信息以及堆栈中的内容被称为该进程的上下文。中断向量不属于进程上下文的一部分,而是一组指向中断处理程序的指针,存放在内存的固定位置。

08. D

上下文切换发生在操作系统调度一个新进程到处理器上运行的时候。一个重要的上下文信息就是程序计数器(PC)的值,当前进程被打断的PC值作为寄存器上下文的一部分保存在进程现场信息中。进程上下文切换过程中不涉及主存和磁盘的数据交换,选项D错误。

09. C

当线程切换时,操作系统需要保存当前线程的程序计数器的值,并恢复新线程的程序计数器,以便从新线程的正确位置开始执行。在多线程条件下,每个线程拥有各自独立的栈,当线程切换时,需要保存当前线程的栈基址寄存器的值,并加载新线程的栈基址,以便正确管理栈空间。同一个进程中的线程共享进程的虚拟地址空间,因此不需要更新页基址寄存器的值。一个进程所打开的文件也是被这个进程中的所有线程共享的,因此不需要更新进程打开文件表。

10. B

FCFS调度算法比较有利于长作业,而不利于短作业。CPU繁忙型作业是指该类作业需要占用很长的CPU时间,而很少请求I/O操作,因此CPU繁忙型作业类似于长作业,采用FCFS可从容完成计算。I/O繁忙型作业是指作业执行时需频繁请求I/O操作,即可能频繁放弃CPU,所以占用CPU的时间不会太长,一旦放弃CPU,则必须重新排队等待调度,所以采用SJF比较适合。时间片轮转法对于短作业和长作业的时间片都一样,所以地位也几乎一样。优先级调度有利


<!-- page: 98 -->

于优先级高的进程,而优先级和作业时间长度是没有必然联系的。因此选择选项B。

11. D

在选择进程调度算法时应考虑以下几个准则:①公平:确保每个进程获得合理的CPU份额;②有效:使CPU尽可能地忙碌;③响应时间:使交互用户的响应时间尽可能短;④周转时间:使批处理用户等待输出的时间尽可能短;⑤吞吐量:使单位时间处理的进程数尽可能最多。由此可见选项D不正确。

12. C

实时系统必须能足够及时地处理某些紧急的外部事件,因此普遍用高优先级,并用“可抢占”来确保实时处理。

13. D

操作系统选择新进程的直接原因是当前运行的进程不能继续运行。当运行的进程由于时间片用完、运行结束、出错、需要等待事件的发生、自我阻塞等,均可以激活调度程序进行重新调度,选择就绪队列的队首进程投入运行。新进程加入就绪队列不是引起调度的直接原因,当CPU正在运行其他进程时,该进程仍需等待。即使是在采用高优先级调度算法的系统中,一个最高优先级的进程进入就绪队列,也需要考虑是否允许抢占,当不允许抢占时,仍需等待。

14. D

进程(线程)调度的时机包括:运行的进程(线程)运行完毕、运行的进程(线程)自我阻塞、运行的进程(线程)的时间片用完、运行的进程(线程)所需的资源没有准备好(会阻塞进程)、运行的进程(线程)出现错误(会终止进程)。因此,选项I、II、III、IV和V都正确。

15. B

4个作业的周转时间分别是 $2\mathrm{h}, 4\mathrm{h}, 6\mathrm{h}, 8\mathrm{h}$,所以4个作业的总周转时间为 $2 + 4 + 6 + 8 = 20\mathrm{h}$。此时,平均周转时间 = 各个作业周转时间之和/作业数 = $20 / 4 = 5$ 小时。

16. B、E、C、D

照顾短作业用户,选择短作业优先调度算法;照顾紧急作业用户,即选择优先级高的作业优先调度,采用基于优先级的剥夺调度算法;实现人机交互,要保证每个作业都能在一定时间内轮到,采用时间片轮转法;使各种作业用户满意,要处理多级反馈,所以选择多级反馈队列调度算法。

17. D

优先级调度算法分静态和动态两种。静态优先级在进程创建时确定,之后不再改变。

18. B

系统采用短作业优先调度算法,作业的执行顺序为 $\mathrm{J}_1, \mathrm{J}_2, \mathrm{J}_3, \mathrm{J}_1$ 的周转时间为 $T_1, \mathrm{J}_2$ 的周转时间为 $T_1 + T_2, \mathrm{J}_3$ 的周转时间为 $T_1 + T_2 + T_3$,则平均周转时间为 $(T_1 + T_1 + T_2 + T_1 + T_2 + T_3) / 3 = (3T_1 + 2T_2 + T_3) / 3$。

19. D

在同一台处理器上以单道方式运行时,要想获得最短的平均周转时间,用短作业优先调度算法会有较好的效果。就本题目而言:选项A的平均周转时间 $= (2 + 7 + 10) / 3\mathrm{h} = 19 / 3\mathrm{h}$;选项B的平均周转时间 $= (3 + 8 + 10) / 3\mathrm{h} = 7\mathrm{h}$。选项C的平均周转时间 $= (5 + 7 + 10) / 3\mathrm{h} = 22 / 3\mathrm{h}$;选项D的平均周转时间 $= (2 + 5 + 10) / 3\mathrm{h} = 17 / 3\mathrm{h}$。

20. C

处于运行态的进程用完一个时间片后,其状态会变为就绪态,等待下一次处理器调度。进程执行完最后的语句并使用系统调用exit请求操作系统删除它或出现一些异常情况时,进程才会终止。

21. C

$$
\text{响应比} = \frac{\text{等待时间} + \text{要求服务时间}}{\text{要求服务时间}} = \frac{2 + 1}{1} = 3
$$


<!-- page: 99 -->

22. D

优先级算法中,I/O 繁忙型作业要优于计算繁忙型作业,系统进程的优先权应高于用户进程的优先权。作业的优先权与长作业、短作业或系统资源要求的多少没有必然的关系。在动态优先权中,随着进程执行时间的增加其优先权随之降低,随着作业等待时间的增加其优先权相应上升。

23. B

时间片轮转算法是按固定的时间配额来运行的,时间一到,不管是否完成,当前的进程必须撤下,调度新的进程,因此它是由时间配额决定的、是绝对可抢占的。而优先级算法和短进程优先算法都可分为抢占式和不可抢占式。

24. B

作业是从用户角度出发的,它由用户提交,以用户任务为单位;进程是从操作系统出发的,由系统生成,是操作系统的资源分配和独立运行的基本单位。

25. B

时间片轮转调度算法在实际运行中也按先后顺序使用时间片,时间片过大时,我们可以认为其大于进程需要的运行时间,即转变为先来先服务调度算法。

26. D

对于这种类型的题目,我们可以采用广义甘特图来求解,甘特图的画法在1.2节的习题中已经有所介绍。我们直接给出甘特图(见下图),以非抢占为例。


在0时刻,进程 $\mathbf{P}_1$ 到达,于是处理器分配给 $\mathbf{P}_1$,因为是不可抢占的,所以 $\mathbf{P}_1$ 一旦获得处理器,就会运行直到结束;在时刻9,所有进程已经到达,根据短进程优先调度,会把处理器分配给 $\mathbf{P}_3$,接下来就是 $\mathbf{P}_5$:然后,因为 $\mathbf{P}_2$,$\mathbf{P}_4$ 的预计运行时间一样,所以在 $\mathbf{P}_2$ 和 $\mathbf{P}_4$ 之间用先来先服务调度,优先把处理器分配给 $\mathbf{P}_2$,最后再分配给 $\mathbf{P}_4$,完成任务。

周转时间 = 完成时间 - 作业到达时间,从图中显然可以得到各进程的完成时间,于是 $\mathbf{P}_1$ 的周转时间是 $9 - 0 = 9$;$\mathbf{P}_2$ 的周转时间是 $16 - 0.4 = 15.6$;$\mathbf{P}_3$ 的周转时间是 $10 - 1 = 9$;$\mathbf{P}_4$ 的周转时间是 $20 - 5.5 = 14.5$;$\mathbf{P}_5$ 的周转时间是 $12 - 7 = 5$;平均周转时间为 $(9 + 15.6 + 9 + 14.5 + 5) / 5 = 10.62$。

同理,抢占式的周转时间也可通过画甘特图求得,而且直观、不易出错。

抢占式的平均周转时间为6.8。

甘特图在操作系统中有着广泛的应用,本节习题中会有不少这种类型的题目,若读者按照上面的方法求解,则解题时就可以做到胸有成竹。

27. D

当这五个批处理作业采用短作业优先调度算法时,平均周转时间 $= [2 + (2 + 4) + (2 + 4 + 6) + (2 + 4 + 6 + 8) + (2 + 4 + 6 + 8 + 10)] / 5 = 14$。

这道题主要考查读者对各种优先调度算法的认识。若按照18题中的方法求解,则可能要花费一定的时间,但这是值得的,因为可以起到熟练基本方法的效果。在考试中很少会遇到操作量


<!-- page: 100 -->

和计算量如此大的题目,所以读者不用担心。

## 28. C

根据各个进程的到达时间和预计运行时间,画出甘特图如下。由此可知,各个进程的周转时间分别为  $4\mathrm{h}$ 、 $1\mathrm{h}$ 、 $8\mathrm{h}$ 、 $12\mathrm{h}$ 、 $2\mathrm{h}$ ,所以总周转时间为  $4 + 1 + 8 + 12 + 2 = 27\mathrm{h}$ 。


## 29. D

新进程总是先进入第一级队列的队尾。在  $0 \sim 10 \mathrm{~ms}$  时段, $\mathrm{P}_{1}$  在队列 A 上运行;在  $10 \sim 30 \mathrm{~ms}$  时段, $\mathrm{P}_{1}$  在队列 B 上运行;当  $t = 30 \mathrm{~ms}$  时, $\mathrm{P}_{2}$  进入队列 A,因此在  $30 \sim 40 \mathrm{~ms}$  时段, $\mathrm{P}_{2}$  在队列 A 上运行;在  $40 \sim 60 \mathrm{~ms}$  时段, $\mathrm{P}_{2}$  在队列 B 上运行,此时  $\mathrm{P}_{2}$  运行结束;最后  $\mathrm{P}_{1}$  在  $60 \sim 90 \mathrm{~ms}$  和  $90 \sim 120 \mathrm{~ms}$  时段内,于队列 C 上运行 2 个时间片,因此  $\mathrm{P}_{1}$  的总周转时间为  $120 \mathrm{~ms}$ 。


## 30. A

分时系统需要同时满足多个用户的需要,因此把处理器时间轮流分配给多个用户作业使用,即采用时间片轮转调度算法。

## 31. B

先来先服务调度算法中,若一个长进程(作业)先到达系统,则会使后面的许多短进程(作业)等待很长的时间,因此对短进程(作业)不利。

## 32. B

短进程优先调度算法具有最短的平均周转时间。平均周转时间 = 各进程周转时间之和/进程数。因为每个进程的执行时间都是固定的,所以变化的是等待时间,只有短进程优先算法能最小化等待时间。

## 33. C

系统开销小不是多级反馈队列调度算法的特性,而正好相反,该算法需要设置多个就绪队列,并且要在不同的队列之间进行进程的转移和抢占,因此增加了系统开销。

## 34. C

高响应比优先算法需要根据进程的等待时间和服务时间来计算响应比;多级反馈队列算法涉及多个队列的管理,以及进程在队列之间的转移,它们的系统开销都较大。时间片轮转算法虽然简单,但它需要为每个进程分配一个固定的时间片,并且在时间片用完时进行上下文切换,因此它的系统开销也不小。先来先服务算法是一种最简单的调度算法,它只需按照进程到达的先后顺序进行调度,无须进行任何优先级或时间片的判断和分配,因此系统开销最小。

## 35. B

先来先服务算法和时间片轮转算法都不会出现饥饿现象,因为它们都是按照进程到达的顺序或固定的时间片来调度的,不会因为进程的特征而忽略某些进程。短作业优先算法(也可视为一种特殊的优先级算法)和优先级算法都可能出现饥饿现象,因为它们都是根据进程的服务时间或优先级来调度的,这样就可能导致一些长作业或低优先级的进程长期得不到调度。


<!-- page: 101 -->

36. A

多处理机调度需要额外考虑负载平衡和处理器亲和性两个调度目标。负载平衡是指应尽量让每个CPU都同等地忙碌,处理器亲和性是指应尽量让一个进程运行在同一个CPU上。

37. D

响应比 = (等待时间 + 执行时间) / 执行时间。它综合考虑了每个进程的等待时间和执行时间,对于同时到达的长进程和短进程,短进程会优先执行,以提高系统吞吐量;而长进程的响应比可以随等待时间的增加而提高,不会产生进程无法调度的情况。

38. A

选项 A 中进程时间片用完,可降低其优先级以让其他进程被调度进入执行状态。选项 B 中进程刚完成 I/O,进入就绪队列等待被 CPU 调度,为了让其尽快处理 I/O 结果,因此应提高优先级。选项 C 中进程长期处于就绪队列,为不至于产生饥饿现象,也应适当提高优先级。选项 D 中进程的优先级不应该在此时降低,而应在时间片用完后再降低。

39. B

响应比 = (等待时间 + 执行时间) / 执行时间。高响应比优先算法在等待时间相同的情况下,作业执行时间越短,响应比越高,满足短任务优先。随着长作业等待时间的增加,响应比会变大,执行机会也会增大,因此不会发生饥饿现象。先来先服务和时间片轮转不符合短任务优先,非抢占式短任务优先会产生饥饿现象。

40. B

由于 $\mathrm{P}_2$ 比 $\mathrm{P}_1$ 晚 $5\mathrm{ms}$ 到达,$\mathrm{P}_1$ 先占用CPU,作业运行的甘特图如下。


41. C

选项 A、B、D 显然属于可以进行 CPU 调度的情况。对于选项 C,处于临界区的进程也可能因中断或抢占而导致调度,此外,若进程在临界区内请求的是一个需要等待的资源,比如打印机,则它主动放弃 CPU,让其他进程运行。

42. B

为了合理地设置进程优先级,应综合考虑进程的CPU时间和I/O时间。对于优先级调度算法,一般来说,I/O型作业的优先权高于计算型作业的优先权,这是由于I/O操作需要及时完成,它没有办法长时间地保存所要输入/输出的数据,所以考虑到系统资源利用率,要选择I/O繁忙型作业有更高的优先级。

43. A

采用静态优先级调度且系统总是出现优先级高的任务时,优先级低的任务总是得不到CPU而产生饥饿现象;而短任务优先调度不管是抢占式的还是非抢占的,当系统总是出现新来的短任务时,长任务会总是得不到CPU,产生饥饿现象,因此选项B、C、D都错误。

44. B

这类调度题目最好画图。因CPU、输入设备、输出设备都只有一个,因此各操作步骤不能重叠,画出运行时的甘特图后,就能清楚地看到不同作业间的时序关系,如下图所示。


<!-- page: 102 -->

[tbl-18.md](tbl-18.md)

45. D

注意,系统是在 $t = 2$ 时开始作业调度的,此时 $\mathrm{J}_4$ 还没有到达。FCFS调度算法的特点是作业来得越早,优先级就越高,因此选择 $\mathrm{J}_1$。SJF调度算法的特点是作业运行时间越短,优先级就越高,因此选择 $\mathrm{J}_3$。

46. B

进程切换带来系统开销,切换次数越多,开销就越大,选项A正确。当前进程的时间片用完后,其状态由执行态变为就绪态,选项B错误。时钟中断是系统中特定的周期性时钟节拍,操作系统通过它来确定时间间隔,实现时间的延时和任务的超时,选项C正确。现代操作系统为了保证性能最优,通常根据响应时间、系统开销、进程数量、进程运行时间等因素确定时间片大小,选项D正确。

47. D

由优先权可知,进程的执行顺序为 $\mathrm{P}_2 \rightarrow \mathrm{P}_3 \rightarrow \mathrm{P}_1$。$\mathrm{P}_2$ 的周转时间为 $1 + 15 + 24 = 40\mu \mathrm{s}$;$\mathrm{P}_3$ 的周转时间为 $18 + 1 + 24 + 1 + 36 = 80\mu \mathrm{s}$;$\mathrm{P}_1$ 的周转时间为 $30 + 1 + 24 + 1 + 36 + 1 + 12 = 105\mu \mathrm{s}$;平均周转时间为 $(40 + 80 + 105) / 3 = 225 / 3 = 75\mu \mathrm{s}$,因此选择选项D。

48. C

进程 $\mathrm{P}_1$ 和 $\mathrm{P}_2$ 依次创建后进入队列 $\mathrm{Q}_1$,根据时间片调度算法的规则,进程 $\mathrm{P}_1$ 和 $\mathrm{P}_2$ 将依次被分配 $10\mathrm{ms}$ 的CPU时间,两个进程分别执行完一个时间片后都会被转入队列 $\mathrm{Q}_2$,就绪队列 $\mathrm{Q}_2$ 采用短进程优先调度算法,此时 $\mathrm{P}_1$ 还需要 $20\mathrm{ms}$ 的CPU时间,$\mathrm{P}_2$ 还需要 $10\mathrm{ms}$ 的CPU时间,所以 $\mathrm{P}_2$ 会被优先调度执行,$10\mathrm{ms}$ 后进程 $\mathrm{P}_2$ 执行完成,之后 $\mathrm{P}_1$ 再调度执行,再过 $20\mathrm{ms}$ 后 $\mathrm{P}_1$ 也执行完成。运行图表述如下。


进程 $\mathrm{P}_1$、$\mathrm{P}_2$ 的等待时间分别为图中的虚横线部分,平均等待时间 $= (\mathrm{P}_{1}$ 的等待时间 $+ \mathrm{P}_{2}$ 的等待时间)/2 $= (20 + 10) / 2 = 15$,因此答案选C。

49. D

多级反馈队列调度算法需要综合考虑优先级数量、优先级之间的转换规则等,就绪队列的数量会影响长进程的最终完成时间,选项I正确;就绪队列的优先级会影响进程执行的顺序,选项II正确;各就绪队列的调度算法会影响各队列中进程的调度顺序,选项III正确;进程在就绪队列中的迁移条件会影响各进程在各队列中的执行时间,选项IV正确。

50. C


<!-- page: 103 -->

时钟中断处理程序是一种特殊的中断处理程序,它负责在每个时钟周期结束时执行一些操作,如内核中时钟变量的值、当前进程占用CPU的时间、当前进程在时间片内的剩余执行时间。时钟中断处理程序的触发条件是系统定时器(一种可编程的硬件芯片)以固定的频率(称为节拍率)产生一个中断信号,通知CPU进行中断处理。在分时系统的时间片轮转调度中,当时钟中断处理程序检查到当前进程的时间片用完时,就触发进程调度,调度程序从就绪队列中选择一个进程为其分配时间片,并且修改该进程的进程控制块中的进程状态等信息,同时将时间片用完的进程放入就绪队列或让其结束运行,选项I、II、III正确。阻塞队列中的进程只有被唤醒并进入就绪队列后,才能参与调度,所以该调度过程不使用阻塞队列。