操作系统-第3章习题解析
第三章习题解析
1.⾼级调度不低级调度的主要任务是什么?为什么要引⼊中级调度?
答:⾼级调度的主要任务是根据某种算法,把外存上处于后备队列中的那些作业调⼊内存。低级调度是保存处理机的现场信息,按某种算法先取进程,再把处理器分配给进程。
引⼊中级调度的主要⽬的是为了提⾼内存利⽤率和系统吞吐量。使那些暂时不能运⾏的进程不再占⽤内存资源,将它们调⾄外存等待,把进程状态改为就绪驻外存状态或挂起状态。
2.处理机调度算法的共同⽬标是什么?批处理系统的调度⽬标⼜是什么?
答:共同⽬标:资源利⽤率,公平性,平衡性,策略强制执⾏。
批处理系统的调度⽬标:平均周转时间短,系统吞吐量⾼,处理机利⽤率⾼。
3.何谓作业、作业步和作业流?
答:作业包含通常的程序和数据,还配有作业说明书。系统根据该说明书对程序的运⾏进⾏控制。批处
理系统中是以作业为基本单位从外存调⼊内存。
一个线程可以包含多个进程 作业步是指每个作业运⾏期间都必须经过若⼲个相对独⽴相互关联的顺序加⼯的步骤。
作业流是指若⼲个作业进⼊系统后依次存放在外存上形成的输⼊作业流;在操作系统的控制下,逐个作业进程处理,于是形成了处理作业流。
4.在什么情况下需要使⽤作业控制块JCB?其中包含了哪些内容?
答:每当作业进⼊系统时,系统便为每个作业建⽴⼀个作业控制块JCB,根据作业类型将它插⼊到相应的后备队列中。
JCB包含的内容通常有:1)作业标识 2)⽤户名称 3)⽤户账户 4)作业类型(CPU繁忙型、I/0芳名型、批量型、终端型) 5)作业状态 6)调度信息(优先级、作业已运⾏)
7)资源要求 8)进⼊系统时间 9)、开始处理时间 10)作业完成时间 11)作业退出时间 12)资源使⽤情况等
5.在作业调度中应如何确定接纳多少个作业和接纳哪些作业?
答:作业调度每次接纳进⼊内存的作业数,取决于多道程序度。应将哪些作业从外存调⼊内存,取决于采⽤的调度算法。最简单的是先来服务调度算法,较常⽤的是短作业优先调度算法和基于作业优先级的调度算法。
7.试说明低级调度的主要功能。
答:(1)保存处理机的现场信息(2)按某种算法选取进程(3)把处理机分配给进程。
8.在抢占调度⽅式中,抢占的原则是什么?
答:抢占的原则有:时间⽚原则、优先权原则、短作业优先权原则等。
9.在选择调度⽅式和调度算法时,应遵循的准则是什么?
答:(1)⾯向⽤户的准则:周转时间短、响应时间快、截⽌时间的保证、优先权准则。
(2)⾯向系统的准则:系统吞吐量⾼、处理机利⽤率好、各类资源的平衡利⽤。
10.在批处理系统、分时系统和实时系统中,各采⽤哪⼏种进程(作业)调度算法?
答:批处理系统的调度算法:短作业优先、优先权、⾼响应⽐优先、多级反馈队列调度算法。
分时系统的调度算法:时间⽚轮转法。
实时系统的调度算法:最早截⽌时间优先即EDF、最低松弛度优先即LLF算法。
11.何谓静态和动态优先级?确定静态优先级的依据是什么?
答:静态优先级是指在创建进程时确定且在进程的整个运⾏期间保持不变的优先级。
动态优先级是指在创建进程时赋予的优先权,可以随进程推进或随其等待时间增加⽽改变的优先级,可以获得更好的调度性能。
确定进程优先级的依据:进程类型、进程对资源的需求和⽤户要求。
12.试⽐较FCFS和SPF两种进程调度算法。
答:相同点:两种调度算法都可以⽤于作业调度和进程调度。
不同点:FCFS调度算法每次都从后备队列中选择⼀个或多个最先进⼊该队列的作业,将它们调⼊内存、分配资源、创建进程、插⼊到就绪队列。
该算法有利于长作业/进程,不利于短作业/进程。SPF算法每次调度都从后备队列中选择⼀个或若
⼲个估计运⾏时间最短的作业,调⼊内存中运⾏。该算法有利于短作业/进程,不利于长作业/进程。
13.在时间⽚轮转法中,应如何确定时间⽚的⼤⼩?
答:时间⽚应略⼤于⼀次典型的交互需要的时间。⼀般应考虑三个因素:系统对相应时间的要求、就绪队列中进程的数⽬和系统的处理能⼒。
14.通过⼀个例⼦来说明通常的优先级调度算法不能适⽤于实时系统?
答:实时系统的调度算法很多,主要是基于任务的开始截⽌时间和任务紧急/松弛程度的任务优先级调度算法,通常的优先级调度算法不能满⾜实时系统的调度实时性要求⽽不适⽤。
15.为什么说多级反馈队列调度算法能较好地满⾜各⽅⾯⽤户的需要?
答:终端型⽤户:由于终端型⽤户提交的作业多属于交互型作业,通常较⼩,系统只要能使这些作业在第⼀队列规定的时间⽚内完成,便可使终端型⽤户感到满意
短批处理作业⽤户:对于这类作业,如果可在第⼀队列中执⾏完成,便获得与终端型作业⼀样的响应时间。对于稍长的短作业,也只需在第⼆和第三队列各执⾏⼀时间⽚完成,其周转时间仍然较短。
长批处理作业⽤户:对于长作业,它将依次在第1,2,……n个队列中运⾏,然后再按轮转⽅式运⾏,⽤户不必担⼼其作业长期得不到处理。
16.为什么说传统的⼏种调度算法都不能算是公平调度算法?
答:以上介绍的⼏种调度算法所保证的只是优先运⾏,如优先级算法是优先级最⾼的作业优先运⾏,但并不保证作业占⽤了多少处理机时间。另外也未考虑到调度的公平性。
17.保证调度算法是如何做到调度的公平性的?
答:保证调度算法是另外⼀种类型的调度算法,它向⽤户所做出的保证并不是优先运⾏,⽽是明确的性能保证,该算法可以做到调度的公平性。
⼀种⽐较容易实现的性能保证是处理机分配的公平性。如果在系统中有n个相同类型的进程同时运⾏,为公平起见,须保证每个进程都获得相同的处理机时间1/n。
18.公平分享调度算法⼜是如何做到调度的公平性的?
答:在公平分享调度算法中,调度的公平性主要是针对⽤户⽽⾔,使所有⽤户能获得相同的处理机时间,或所要求的时间⽐例。
19.为什么在实时系统中,要求系统(尤其是CPU)有较强的处理能⼒?
答:在实时系统中,不但包括周期任务、偶发任务、⾮周期任务,还包括⾮实时任务。实时任务要求要满⾜时限,⽽⾮实时任务要求要使其响应时间尽可能的短。
多种类型任务的混合,使系统的可调度性分析更加困难。实际上有些实时系统CPU处理能⼒并不强,⽐如⼀些嵌⼊式实时系统,这就要求系统尽量少做⼀些并发计算任务,留出⾜够冗余处理实时任务。
20.按调度⽅式可将实时调度算法分为哪⼏种?
答:按调度⽅式不同,可分为⾮抢占调度算法和抢占调度算法两种。
21.什么是最早截⽌时间优先调度算法,请举例说明之。
答:根据任务的开始截⽌时间确定的任务优先级调度算法。截⽌时间越早则优先级越⾼。该算法要求在系统中保持⼀个实时任务就绪队列,该队列按各任务截⽌时间的先后排序。
22.什么是最低松弛度优先调度算法,请举例说明之。
答:该算法是根据任务的紧急(或松弛)程度,来确定任务的优先级。任务的紧急程度越⾼,为该任务所赋予的优先级就越⾼,以使之优先执⾏。
例如,⼀个任务在200ms时必须完成,⽽它本⾝所需的运⾏时间就有100ms,因此,调度程序必须在100ms之前调度执⾏,该任务的紧急程度(松弛程度)为100ms。
⼜如,另⼀任务在400ms时必须完成,它本⾝需要运⾏150ms,则其松弛程度为250ms。
最早截⽌时间优先调度算法:任务要求的截⽌时间越早,其优先级就越⾼。
最低松弛度优先调度算法:任务的紧急程度越⾼,其优先级就越⾼。
23.何谓“优先级倒置”现象,可采取什么⽅法来解决?
答:当前0S⼴泛采⽤优先级调度算法和抢占⽅式,然⽽在系统中存在着影响进程运⾏的资源⽽可能产⽣“优先级倒置”的现象,即⾼优先级进程(或线程)被低优先级进程(或线程)延迟或阻塞。
24.试分别说明可重⽤资源和可消耗资源的性质。
答:可重⽤性资源:每⼀个可重⽤性资源中的单元只能分配给⼀个进程使⽤,不允许多个进程共享。进程在使⽤可重⽤性资源时,须按照这样的顺序:请求资源、使⽤资源、释放资源。
系统中每⼀类可重⽤性资源中的单元数⽬是相对固定的,进程在运⾏期间既不能创建也不能删除它。
可消耗性资源:每⼀类可消耗性资源的单元数⽬在进程运⾏期间是可以不断变化的,有时它可以有许多,有时可能为0。进程在运⾏过程中,可以不断创造可消耗性资源的单元,将它们放⼊该资源类的缓冲区中,以增加该资源类的单元数⽬。
进程在运⾏过程中,可以请求若⼲个可消耗性资源单元,⽤于进程⾃⼰的消耗,不再将它们返回给该资源类中。
25.试举例说明竞争不可抢占资源所引起的死锁。
答:例如,系统中有两个进程P1和P2,它们都准备写两个⽂件F1和F2,⽽这两者都属于可重⽤和不可抢占性资源。进程P1先打开F1,然后再打开⽂件F2;进程P2先打开⽂件F2,后打开F1,下⾯⽰出了这段代码。
P1
P2
.........
Open(f1,w); Open(f2,w);
Open(f2,w); Open(f1,w);
两个进程P1和P2在并发执⾏时,如果P1先打开F1和F2,然后P2才去打开F1(或F2),由于⽂件F1(F2)已被P1打开,故P2会被阻塞。当P1写完⽂件F1(或F2)⽽关闭F1(F2)时,P2会由阻塞状态转为就绪状态,被调度执⾏后重新打开⽂件F1(或F2)。
在这种情况下,P1和P2都能正常运⾏下去。若P2先打开F1和F2,然后P1才去打开F1(或F2),P1和P2同样也可以正常运⾏下去。
但如果在Pl打开F1的同时,P2去打开F2,每个进程都占有⼀个打开的⽂件,此时就可能出现问题。因为当P1试图去打开F2,⽽P2试图去打开F1时,
这两个进程都会因⽂件已被打开⽽阻塞,它们希望对⽅关闭⾃⼰所需要的⽂件,但谁也⽆法运⾏,因此这两个进程将会⽆限期地等待下去,⽽形成死锁。
26.为了破坏“请求和保持”条件⽽提出了两种协议,试⽐较这两种协议。
答:第⼀种协议在所有进程开始运⾏之前,必须⼀次性地申请其在整个运⾏过程中所需的全部资源,并且在分配资源时,
只要有⼀种资源不能满⾜进程的要求,即使其它所需的各种资源都空闲也不分配给该进程,⽽让该进程等待。因此有资源被严重浪费、进程经常会发⽣饥饿现象等缺点。
第⼆种协议是对第⼀种协议的改进,它允许⼀个进程只获得运⾏初期所需的资源后,便开始运⾏。进程运⾏过程中再逐步释放已分配给⾃⼰的,
且已⽤毕的全部资源,然后再请求新的所需资源。如此便可提⾼设备的利⽤率,还可减少进程发⽣饥饿的概率。
27.何谓死锁?产⽣死锁的原因和必要条件是什么?
答: (1) 死锁是指多个进程因竞争资源⽽造成的⼀种僵局,若⽆外⼒作⽤,这些进程都将永远不能再向前推进;
(2)产⽣死锁的原因有⼆,⼀是竞争资源,⼆是进程推进顺序⾮法;
(3)必要条件是:互斥条件,请求和保持条件,不剥夺条件和环路等待条件。
28.在解决死锁问题的⼏个⽅法中,哪种⽅法最易于实现?哪种⽅法是资源利⽤率最⾼?
答:解决/处理死锁的⽅法有预防死锁、避免死锁、检测和解除死锁,其中预防死锁⽅法最容易实现,但由于所施加的限制条件过于严格,会导致系统资源利⽤率和系统吞吐量降低;⽽检测和解除死锁⽅法可是系统获得较好的资源利⽤率和系统吞吐量。
29.请详细说明可通过哪些途径预防死锁?
答:(1) 摒弃"请求和保持"条件:系统规定所有进程开始运⾏之前,都必须⼀次性地申请其在整个运⾏过程所需的全部资源,
但在分配资源时,只要有⼀种资源不能满⾜某进程的要求,即使其它所需的各资源都空闲,也不分配给该进程,⽽让该进程等待;
(2)摒弃"不剥夺”条件:系统规定,进程是逐个地提出对资源的要求的。当⼀个已经保持了某些资源的进程,再提出新的资源请求⽽不能⽴即得到满⾜时,必须释放它已经保持了的所有资源,待以后需要时再重新申请;
(3)摒弃"环路等待"条件:系统将所有资源按类型进⾏线性排序,并赋予不同的序号,且所有进程对资源的请求必须严格按序号递增的次序提出,这样,在所形成的资源分配图中,不可能再出现环路,因⽽摒弃了"环路等待"条件。
30.在教材银⾏家算法的例⼦中,如果P<sub>0</sub>发出的请求向量由Request0(0,2,0)改为Request0(0,1,0),问系统可否将资源分配给它?
答:PO发出请求向量Requst0(0,1,0),按银⾏家算法进⾏检查:
①Request0(0,1,0)≤Need0(7,4,3):
②Request0(0,1,0)≤Available(2,3,0);
③系统暂时先假定可为P0分配资源,修改Available,Allocation1和Need1向量在下⾯数据结构中的数值:
Available[j]:=Available[j]-Request i[j];A1location [i,j]:=A1location [i,j]+Request i[j];eed [i,j]:=Need [i,j]-Requesti[j];
计算结果为:
Available0=Available0(2,3,0)-Request0(0,1,0)=(2,2,0)
Allocation0=Allocation0(0,1,0)+Request0 (0,1,0)=(0,2,0)
Need0=Need0(7,4,3)-Request0(0,1,0)=(7,3,3)
可以到⼀个安全序列(P1,P3,P4,P2,P0},所以系统是安全的,系统可以⽴即将P1所申请的资源(0,1,0)分配给它。给P1分配资源之后,系统的资源数⽬Available=(2,2,0)
31.在银⾏家算法中,若出现下述资源分配情:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论