3.5 自测练习答案

一、填空题

1.CPU、外设

2.封闭性、确定性、可再现性

3.多道、宏观上并行、微观上串行

4.线程、并发度

5.原语

6.N

7.程序(段)、数据(段)、PCB、程序(段)

8.运行态、就绪态、阻塞态(或等待态)

9.PCB

10.优先级

11.作业控制块FCB

12.输入井、输出井

13.用户(级)线程、内核(级)线程、内核(级)线程

14.作业周转时间、作业运行时间

15.前台、后台

16.运行时间短、等待时间长

17.FCFS

18.终端作业

19.作业调度、进程调度

20.作业步

21.一对一模型、多对一模型、多对多模型

22.非抢占(或非剥夺)、抢占(或剥夺)

23.CPU

24.3、2、3

25.SJF

26.等待、运行(或计算,或执行)

27.就绪

28.PCB(或进程控制块)

29.FCFS

30.进程、线程

二、单项选择题

1.C 2.D 3.C 4.C 5.A

6.C 7.D 8.A 9.A 10.B

11.D 12.B 13.C 14.C 15.B

16.B 17.D 18.D 19.B 20.B

21.B 22.D 23.C 24.B 25.C

26.B 27.D 28.C 29.C 30.C

31.D 32.B

三、不定项选择题

1.BC 2.ACEF 3.ABCDE 4.ABE 5.C

6.ACE 7.AB 8.B 9.BCD 10.ABCDE

11.B 12.ABCD 13.BCDE 14.D 15.ABCDE

四、是非题

1.错误:被作业调度选中,只是调入内存,为其创建PCB,进入进程就绪队列,是否能占用CPU,要看进程调度能否选中。

2.错误:每一时刻只有一个进程占有CPU在执行。

3.错误:用户进程所执行的程序可能是用户编写的程序,也可能是系统程序。

4.正确

5.正确

6.错误:并发和并行是两个不同的概念。

7.正确

8.错误:进程映像中最重要的部分是进程上下文,因为它是进程执行活动全过程的静态描述。

9.正确

10.正确

11.错误:作业控制语言是供书写作业说明书的,以控制作业的执行(不同于编程语言)。

12.正确

13.正确

14.错误:因为分时系统不存在作业的概念,所以不需要进行作业调度。

15.错误:分时系统中,当时间片过小时,进程调度时间所占比重加大,并且响应时间也会增大。

16.正确

17.错误:不管使用的是何种调度算法,同一个作业的运行时间都应相同,是固定值;不同的应该是该作业的周转时间,因为不同的调度算法会产生不同的等待时间。

18.错误:应当使输入/输出为主的作业的优先级高于以计算为主的作业,因为以输入/

输出为主的作业占用CPU的处理时间短,所以该类作业的运行时间短;而作业调度算法中,短作业优先调度算法的作业平均周转时间最短。

19.正确

20.错误:作业调度是按照作业调度策略从后备状态队列中选择作业进入内存,此后的工作由进程调度完成,直到作业运行完成,作业调度程序处理善后工作。

五、综合题

1.答:不是。首先,内存的容量限制了系统同时处理程序的数量;其次,系统中数量有限的物理设备也约束着内存中同时运行的程序数量,因为有可能出现多个程序相互等待被其他程序占用的设备,从而影响系统的效率;此外,如果内存中的程序数目过多,会对处理器造成激烈竞争,不仅会影响系统响应速度,也会增加因调度处理器而带来的系统开销。一般情况下,会根据机器的配置情况确定内存中同时存在的程序数量。

2.答:同一个进程中的多线程之间共享进程的地址空间、主存空间和进程拥有的其他资源,其中包括代码段、数据段和动态分配的堆空间等。

线程私有成分有:线程控制块、用户栈以及运行时为线程分配的各个寄存器。

3.答:并行概念主要是描述“若干事件在同一瞬间发生”,如计算机系统中的CPU与外部设备并行操作是指,CPU执行程序的同时,外部设备正在进行输入/输出操作。

并发是指“若干事件在同一时间间隔内同时发生并发展着”。比如说,在一段时间内两个进程并发运行,指的是它们都已经开工运行了一些程序,但都没有完成。当然,这并不能规定这两个进程是在单处理机环境中以轮流方式使用CPU,还是在多处理机环境中各自使用一台CPU运行。

二者的互相联系体现在,它们研究的对象都不是单个事件而是多个事件,并且这些事件都在一个时间段内发生。它们的不同在于,前者强调同一瞬间若干事件都在发生,而后者却不强调这一点,只要在一个时间段内发生就足够了。因此,可以将并行看做是并发的一种特例。

4.答:一方面,进程和线程都被视为相似实体的系统中,有些系统代码可以简化。例如,一个调度器可以在平等的基础上考虑不同的进程和线程,且不需要特殊的代码,在调度中审查有关线程的进程。另一方面,这种统一会使进程资源限制更加困难。相反,需要考虑一些额外的复杂性,用来确定哪个线程与哪个进程一致和执行重复的计数任务。

5.答:采用该模式的主要优点是:

1)用户级线程可以在一个不支持线程的操作系统上实现;并且具有很好的扩充性。

2)在对进程内的线程进行切换时,不需要改变进程的运行模式,减少了进程在核心态与用户态之间转换时的资源消耗和时间延迟。

3)用户级线程是由系统提供的线程库负责管理,线程库包含了线程创建、终止、线程间消息传递和线程调度管理等实用程序的代码和数据信息,它可以被看做是所有应用程序共享的用户级实用程序,因此,线程的调度管理程序是在用户级上实现的,不用考虑调度算法对系统核心模块的影响,调度机制会比较灵活。

4)理论上讲,用户级线程管理模式不需要为了适应线程管理而修改操作系统的核心内容,该模式可以运行在任何一种操作系统内核之上,这会给设计操作系统带来很大的便利。

采用该模式的主要缺点是:

1)同一进程中的多个线程不能真正并行,即使在多处理器环境中。

2)由于用户级线程对操作系统不可见,调度在进程级别,若某个进程中的一个线程通过系统调用进入操作系统受阻,该进程中的其他线程也不能运行。

6.答:1)高级调度,又称为作业调度,其主要功能是按照某种原则从磁盘上作业队列中选取作业进入主存,并为作业做好运行前的准备工作和作业完成后的善后工作。

2)中级调度决定哪些进程被允许参与和竞争处理机资源。中级调度主要是起到短期调整系统负荷的作用。其所使用的方法是通过“挂起”和“解除挂起”一些进程,来达到调整系统负荷的作用。

3)低级调度,又称进程调度,其主要功能是按照某种原则将处理机分配给就绪进程,执行低级调度功能的程序称为进程调度程序,实现处理机在进程间的转换。

作业调度程序挑选作业进入主存运行是个宏观的概念,实际上被选进主存运行的作业只是具有了竞争处理机的机会,将来真正在处理机上运行的是该作业的一个进程。而进程调度程序才是真正让某个就绪进程到处理机上运行。

7.答:从5条语句中变量引用情况可以看出,S1语句必须首先执行,S2、S3、S4语句可以并行执行,S5语句必须要在S2、S3、S4语句都执行完成后再执行。前驱图如图3-4所示。

3.5 自测练习答案 - 图1

图 3-4 前驱图

8.答:1)采用先来先服务调度算法,则调度顺序为1、2、3。

由表3-6可知:

平均周转时间T=(8+11.6+12)/3=10.53小时。

3.5 自测练习答案 - 图2

2)采用短作业优先调度策略,则调度顺序为1、3、2。

由表3-7可知:

平均周转时间T=(8+8+12.6)/3=9.53小时。

3.5 自测练习答案 - 图3

3)假设事先知道后面到达的作业2和作业3是两个短作业,则存在更好的调度策略,缩短作业的平均周转时间。方法是在作业1到达后暂不投入运行,等所有作业到齐后,再按照短作业优先调度算法进行调度。采用该策略的调度顺序为3、2、1。

由表3-8可以计算出平均周转时间为:

T=(1+5.6+14)/3=6.87小时

由此也说明了,当系统中所有的作业同时到达时,采用短作业优先调度算法可以使作业的平均周转时间最短。

3.5 自测练习答案 - 图4

9.答:1)采用FCFS算法(按A、B、C、D、E顺序),计算过程和结果如表3-9所示。

3.5 自测练习答案 - 图5

2)采用SPF算法,计算过程和结果如表3-10所示。

3.5 自测练习答案 - 图6

3)采用HPF算法,计算过程和结果如表3-11所示。

3.5 自测练习答案 - 图7

4)采用HRRF算法,A先被选中获得CPU的控制权,A运行完成后,交出CPU的控制权,进程调度程序从B、C、D、E中选出响应比最高者执行。此时响应比依次为:

B:1+10/6

C:1+10/2

D:1+10/4

E:1+10/8

进程调度程序选中响应比最高者C。当C执行完成后,进程调度程序再从B、D、E中选出响应比最高者执行,以此类推。结果如表3-12所示。

3.5 自测练习答案 - 图8

5)采用RR算法,时间片为2分钟。作业调度顺序如下:

0分钟:A、B、C、D、E同时到达,作业A开始执行,B、C、D、E等待

2分钟:作业B开始执行,C、D、E、A等待

4分钟:作业C开始执行,D、E、A、B等待

6分钟:作业C运行结束,作业D开始执行,E、A、B等待

8分钟:作业E开始执行,A、B、D等待

10分钟:作业A开始执行,B、D、E等待

12分钟:作业B开始执行,D、E、A等待

14分钟:作业D开始执行,E、A、B等待

16分钟:作业D运行结束,作业E开始执行,A、B等待

18分钟:作业A开始执行,B、E等待

20分钟:作业B开始执行,E、A等待

22分钟:作业B运行结束,E开始执行,A等待

24分钟:作业A开始执行,E等待

26分钟:作业E开始执行,A等待

28分钟:作业E运行结束,作业A开始执行

30分钟:作业A运行结束

结果如表3-13所示。

3.5 自测练习答案 - 图9

10.答:1)方法1:由题意知:

程序A的执行时间为:10+30+10+20+10=80毫秒,使用CPU的时间为:10+10+10=30毫秒。

程序B的执行时间为:10+20+5+20+5=60毫秒,使用CPU的时间为:20+20=40毫秒。CPU的利用率为:(30+40)/(80+60)×100%=50%。

方法2:此题也可以通过图3-5直接计算出CPU的利用率。

3.5 自测练习答案 - 图10

图 3-5 进程A和进程B顺序执行运行轨迹

由图3-5看出,执行完A和B需要总的时间为140毫秒,程序A和B使用CPU的时间分别为30毫秒和40毫秒,因此,CPU的利用率为:70/140×100%=50%。

2)两个程序并发执行的情况如图3-6所示。

3.5 自测练习答案 - 图11

图 3-6 进程A和进程B并发执行运行轨迹

由上图看出,执行完A和B需要总的时间为95毫秒,程序A和B使用CPU的时间分别为30毫秒和40毫秒,因此,CPU的利用率为:70/95×100%=74%。

11.答:根据题意,3个作业的并发执行情况如图3-7所示。

3.5 自测练习答案 - 图12

图 3-7 3个作业并发执行运行轨迹

由图3-7看出:

1)A从开始到完成所用的时间为:30+10+30+10=80毫秒。

B从开始到完成所用的时间为:20+10+10+10+40=90毫秒。

C从开始到完成所用的时间为:20+30+10+10+20=90毫秒。

2)3个作业全部完成CPU的利用率为:(10+20+30+10)/90×100%=78%。

3)3个作业全部完成外设甲的利用率为:(20+30+20)/90×100%=78%。

3个作业全部完成外设乙的利用率为:(30+40)/90×100%=78%。

12.答:10个进程运行,时间片为200毫秒,所以轮转调度一个进程平均需要时间为10+200=210毫秒,系统开销所占比率为:10/210=4.76%。

13.答:表3-4中给出的作业进入系统的时间,就是系统为作业建立作业控制块,并将作业插入到后备作业队列中的时间。

首先需要作业调度程序将合适的作业调入内存,因为本题中系统处于两道程序设计环境,所以内存中最多同时存在两个作业。当运行时间最短的两个作业被作业调度程序选中,系统将为其分配必要的资源,并建立一组相应的进程之后,作业的状态由后备状态转换为运行状态。在内存中,与作业相对应的进程是一个新创建的进程,其状态为就绪状态,位于进程就绪队列中。由于系统是单处理机环境,宏观上两个进程并行,但微观上实为串行,此时需要进程调度按照优先级调度算法,从进程就绪队列中选择一个进程,获得处理机的控制权,此时进程状态由就绪状态转换为执行状态。当进程执行完成后,系统调用进程撤销原语,释放进程占用的资源等。此时系统中只有一道作业,再由作业调度程序从作业后备作业中选中一个作业进入内存,由进程调度程序从进程就绪队列中选中一个进程获得执行,以此类推,直到作业后备队列为空并且所有的进程都执行完。

具体调度顺序及过程如表3-14所示。

3.5 自测练习答案 - 图13

由表3-14可知:

1)JOB1进入内存时间为10:00,运行结束时间为11:10,周转时间为70分钟。

JOB2进入内存时间为10:20,运行结束时间为10:50,周转时间为30分钟。

JOB3进入内存时间为11:10,运行结束时间为12:00,周转时间为90分钟。

JOB4进入内存时间为10:50,运行结束时间为12:20,周转时间为90分钟。

2)平均周转时间为:(70+30+90+90)/4=70分钟。

14.答:优先调度B,即赋予B较高的优先级。因为B占用CPU的时间较短,可以获得较短的平均周转时间。优先调度B,照顾了以输入/输出为主的进程,提高了外设的利用率。此外,如果B是终端型作业,优先调度B,可以保证对终端型作业的及时响应。

15.答:UNIX进程映像主要由3个部分组成。

1)proc结构:是PCB的一部分,保存的是系统经常需要查询和修改的信息,需要快速地访问,因此是常驻内存的。包括进程状态、进程的优先级、进程特征、地址以及大小等信息。

2)正文段:可重入的程序代码,可以为多个进程共享。

3)数据段:由用户栈区、用户数据区和系统数据区组成。

16.答:1)3种调度算法的甘特图如下所示。

SJF算法:

3.5 自测练习答案 - 图14

非抢占式HPF算法:

3.5 自测练习答案 - 图15

RR算法:

3.5 自测练习答案 - 图16

2)3种调度算法中,每个进程的周转时间(微秒)如表3-15所示。

3.5 自测练习答案 - 图17

3)3种调度算法中每个进程的等待时间(微秒)如表3-16所示。

3.5 自测练习答案 - 图18