第八章 死锁习题及答案.docx

上传人:b****7 文档编号:24061102 上传时间:2023-05-23 格式:DOCX 页数:21 大小:26.87KB
下载 相关 举报
第八章 死锁习题及答案.docx_第1页
第1页 / 共21页
第八章 死锁习题及答案.docx_第2页
第2页 / 共21页
第八章 死锁习题及答案.docx_第3页
第3页 / 共21页
第八章 死锁习题及答案.docx_第4页
第4页 / 共21页
第八章 死锁习题及答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

第八章 死锁习题及答案.docx

《第八章 死锁习题及答案.docx》由会员分享,可在线阅读,更多相关《第八章 死锁习题及答案.docx(21页珍藏版)》请在冰豆网上搜索。

第八章 死锁习题及答案.docx

第八章死锁习题及答案

第八章死锁习题及答案

一、填空题

1.进程的“同步”和“互斥”反映了进程间①和②的关系。

【答案】①直接制约、②间接制约

【解析】进程的同步是指在异步环境下的并发进程因直接制约而互相发送消息,进行相互合作、相互等待,使得各进程按一定的速度执行的过程;而进程的互斥是由并发进程同时共享公有资源而造成的对并发进程执行速度的间接制约。

2.死锁产生的原因是①和②。

【答案】①系统资源不足、②进程推进路径非法

【解析】死锁产生的根本原因是系统的资源不足而引发了并发进程之间的资源竞争。

由于资源总是有限的,我们不可能为所有要求资源的进程无限地提供资源。

而另一个原因是操作系统应用的动态分配系统各种资源的策略不当,造成并发进程联合推进的路径进入进程相互封锁的危险区。

所以,采用适当的资源分配算法,来达到消除死锁的目的是操作系统主要研究的课题之一。

3.产生死锁的四个必要条件是①、②、③、④。

【答案】①互斥条件、②非抢占条件、③占有且等待资源条件、④循环等待条件

【解析】

互斥条件:

进程对它所需的资源进行排它性控制,即在一段时间内,某资源为一进程所独占。

非抢占条件:

进程所获得的资源在未使用完毕之前,不能被其它进程强行夺走,即只能由获得资源的进程自己释放。

占有且等待资源条件:

进程每次申请它所需的一部分资源,在等待新资源的同时,继续占有已分配到的资源,

循环等待条件:

存在一进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。

4.在操作系统中,信号量是表示①的物理实体,它是一个与②有关的整型变量,其值仅能由③原语来改变。

【答案】①资源,②队列,③P-V

【解析】信号量的概念和P-V原语是荷兰科学家E.W.Dijkstra提出来的。

信号量是一个特殊的整型量,它与一个初始状态为空的队列相联系。

信号量代表了资源的实体,操作系统利用它的状态对并发进程共享资源进行管理。

信号量的值只能由P-V原语来改变。

5.每执行一次P原语,信号量的数值S减1。

如果S>=0,该进程①;若S<0,则②该进程,并把它插入该③对应的④队列中。

【答案】①继续执行,②阻塞(等待),③信号量,④阻塞(等待)

【解析】从物理概念上讲,S>0时的数值表示某类资源可用的数量。

执行一次P原语,意味着请求分配一个单位的资源,因此描述为S=S-1。

当S<0时,表示已无资源,这时请求资源的进程将被阻塞,把它排在信号量S的等待队列中。

此时,S的绝对值等于信号量队列上的阻塞的进程数目。

6.每执行一次V原语,信号量的数值S加1。

如果①,Q进程继续执行;如果S<=0,则从对应的②队列中移出一个进程R,该进程状态变为③。

【答案】①S>0,②等待,③就绪

【解析】执行一次V原语,意味着释放一个单位的资源。

因此,描述为S=S+1。

当S<0时,表示信号量请求队列中仍然有因请求该资源而被阻塞的进程。

因此,应将信号量对应的阻塞队列中的第一个进程唤醒,使之转至就绪队列。

7.利用信号量实现进程的①,应为临界区设置一个信号量mutex。

其初值为②,表示该资源尚未使用,临界区应置于③和④原语之间。

【答案】①互斥,②1,③P(mutex),④V(mutex)

【解析】一次仅允许一个进程使用的资源称为临界资源,对临界资源实施操作的那段程序称为临界区。

对于具有临界区问题的并发进程,它们之间必须互斥,以保证不同时进入临界区。

利用信号量和P-V原语能方便地解决临界区问题。

mutex为互斥公用信号量,初值为1,临界区的代码被置于P(mutex)、V(mutex)原语之间时,任何欲进入临界区的进程,必须在公用信号量mutex上执行P原语,在完成对临界资源的访问后再执行V原语。

由于mutex初值为1,当第一个进程执行P原语后减为0,表示临界资源空闲,可分配给该进程使之进入临界区,在第一个进程没有退出临界区之前,若此时第二个进程想进入临界区,也应先执行P原语。

而结果是mutex变为负值,就意味着临界资源已被占用,因此,第二个进程被阻塞。

直到第一个进程执行V原语,释放该临界资源mutex到0后,方可唤醒第二个进程,使之进入临界区,待它完成对临界资源的访问后,又执行V原语,使mutex恢复到初始值。

8.在多道环境下,由于进程的并发执行,一段程序为多个进程①时,要求在执行的过程中,该段程序的指令和数据不能被②,这样的程序段称为③。

【答案】①共享,②修改,③纯过程(或共享程序段)

【解析】在多道环境下,常常有许多于程序和应用程序是被多个用户所共用的,为了充分提高内存的利用率,把这些共享的程序和数据在内存只保留一个副本,这就要求这些程序和数据不能被修改。

二、单项选择题

1.在非剥夺调度方式下,运行进程执行V原语之后,其状态。

(A)不变(B)要变

(C)可能要变(D)可能不变

【答案】(A)

【解析】进程的调度方式有两种;剥夺和非剥夺方式。

在剥夺方式下,一旦有优先级高于当前执行进程优先级的进程存在时,便立即发生进程调度,转让处理机。

而非剥夺方式是即使在就绪队列中有优先级高于当前执行进程的进程存在,当前进程仍将继续占有处理机,直到由于该进程自己的原因而让出处理机。

2.两个进程争夺同一个资源。

(A)一定死锁(B)不一定死锁

(C)不死锁(D)以上说法都不对

【答案】(B)

【解析】这和它们申请资源的顺序有关。

3.①是一种只能由P操作和V操作进行访问的特殊变量,可以用来实现异步并行进程间的②以排它地访问共享数据,还可以用来实现③,实现进程间在逻辑上的相互制约关系。

(A)调度(B)类程(C)进程(D)互斥

(E)信号量(F)控制变量(G)同步(H)共享变量

(I)规程(J)分配

【答案】①(E)②(D)③(G)

4.可以被多个进程在任一时刻共享的代码必须是。

(A)不能自身修改的纯码(B)顺序代码

(C)无转移指令的代码(D)汇编语言编制的代码

【答案】(A)

【解析】规定共享代码必须是不自身修改的纯码,主要是为了保证程序执行的正确性。

5.当对信号量进行V原操作之后,。

(A)当S<0,进程继续执行

(B)当S>0,要唤醒一个就绪进程

(C)当S<=0,要唤醒一个等待进程

(D)当S<=0,要唤醒一个就绪进程

【答案】(C)

【解析】V操作的物理含义是回收释放的一个资源,即信号量的值加1。

在这个过程中,如果信号量的值大于0,表明系统没有其他进程正在等待使用该资源,该进程继续执行或转进程调度,这取决于进程调度采用的方式。

如果信号量的值小于或等于0,说明有进程曾经因申请该资源且为得到满足而处于该资源对应的等待队列中,现在释放一个资源就应从该资源的等待队列中唤醒一个进程,使之变为就绪状态。

6.在下列叙述中,错误的一条是。

(A)进程被撤消时,只需释放该进程的PCB就可以了,因为PCB是进程存在的唯一标志

(B)进程的互斥和同步都能用P/V原语实现

(C)用户程序中执行系统调用命令时,处理机的状态字将发生改变

(D)设备独立性是指用户在编程时,所使用的设备与实际设备无关

【答案】(A)

【解析】进程不仅要释放PCB结构,也要释放它所占有的所有资源;而且,当一个祖先进程撤消某个子进程时,还需要审查该子进程是否还有自己的子孙进程,若有的话,还需撤消某个子进程的PCB结构和释放它们所占有的资源。

因此,叙述(A)是错误的。

把并发进程的同步和互斥问题一般化,可以得到一个抽象的一般模型,即生产者/消费者问题。

叙述(B)正确。

处理机的状态将从目态转换到管态。

叙述(C)正确。

用户编程所使用的设备称为逻辑设备,而逻辑设备与物理设备的对应由操作系统的设备管理程序完成。

叙述(D)正确。

7.正在运行的进程在信号量S上作P操作之后,当S<0,进程将进入信号量的。

(A)等待队列(B)提交队列

(C)后备队列(D)就绪队列

【答案】(A)

【解析】执行一次P操作意味着申请一个资源,即信号量S—1。

如果S<0,表明该资源已经没有了,该进程只能等待,所以,此时进程的状态从运行变为等待,并插入到该信号量的等待队列中。

8.如果发现系统有的进程队列就说明系统有可能发生死锁了。

(A)互斥(B)可剥夺

(C)循环等待(D)同步

【答案】(C)

9.某个信号量S初值为3,当前值为-2,则等待在该信号量上的进程数为个。

(A)1(B)2

(C)3(D)5

【答案】(B)

【解析】等待在该信号量上的进程数与信号量的初值无关。

S>0时,S表示可使用的资源数;或表示可使用资源的进程数。

S=0时,表示无资源可供使用;但也没有进程等待该类资源。

S<0时,|S|表示等待使用资源的进程个数;或表示等待进入临界区的进程个数。

10.预先静态分配法是通过破坏条件,来达到预防死锁目的的。

(A)互斥使用资源/循环等待资源

(B)非抢占式分配/互斥使用资源

(C)占有且等待资源/循环等待资源

(D)循环等待资源/互斥使用资源

【答案】(C)

【解析】预先静态分配法,这是针对“占有且等待资源”、“循环等待资源”这两个条件提出的的策略。

要求每一个进程在开始执行前就申请它所需要的全部资源,仅当系统能满足进程的资源要求且把资源分配给进程后,该进程才能开始执行。

这个策略毫无疑问能够防止死锁的发生,因为这样做破坏了以上两个条件。

11.设系统中有N(N>2)个进程,则系统中最不可能的是有个进程处于死锁状态。

(A)0(B)1

(C)2(D)M(2<M<=N)

【答案】(B)

【解析】所谓死锁是指计算机系统和进程所处的一种状态,在系统中,两个或多个进程无限期地等待永远不会发生的条件,我们称此系统处于死锁状态。

三、多项选择题

1.造成死锁的原因是_________。

(A)内存容量太小(B)系统进程数量太多,系统资源分配不当

(C)CPU速度太慢(D)进程推进顺序不合适

(E)外存容量太小

【答案】BD

【解析】所谓死锁是指计算机系统和进程所处的一种状态,在系统中,两个或多个进程无限期地等待永远不会发生的条件,我们称此系统处于死锁状态。

产生死锁的原因一是系统进程数量太多,系统资源分配不当;二是进程推进顺序不合适。

死锁的发生与内存容量、外存容量、CPU速度无关。

所以,应该选择(B)、(D)。

2.下列叙述正确的是_________。

(A)对临界资源应采取互斥访问方式来实现共享

(B)进程的并发执行会破坏程序的“封闭性”

(C)进程的并发执行会破坏程序的“可再现性”

(D)进程的并发执行就是多个进程同时占有CPU

(E)系统死锁就是程序处于死循环

【答案】ABC

【解析】进程的顺序性是指进程在处理器上的执行是按照程序规定的顺序,只有在前一个操作结束后才能开始下一个操作。

当一个进程独占处理器顺序执行时,具有两个特性:

(1)封闭性——进程执行的结果与其执行速度无关,只取决于进程本身。

(2)可再现性——只要初始条件相同,无论进程在什么时间执行都产生相同的结果。

在多道程序设计系统中同时存在着许多进程,在单处理器的情况下,一个进程的工作没有全部完成之前,另一个进程就可开始工作,这些可同时(交替)执行的进程具有并发性,把可同时执行的进程称为“并发进程”。

并发进程相互之间可能是无关的、各自独立的,而有些并发进程相互之间是有交往的,这些进程并发执行时,执行结果与其执行的相对速度有关,因而,进程的并发执行会破坏“封闭性”和“可再现性”。

所以,本题应该选择(A)、(B)、(C)。

3.通常不采用_________方法来解除死锁。

(A)终止一个死锁进程(B)终止所有死锁进程

(C)从死锁进程处抢夺资源(D)从非死锁进程处抢夺资源

(E)终止系统所有进程

【答案】DE

【解析】系统死锁后可采用抢夺这些进程占用的资源,或强迫死锁进程结束等办法来解除死锁。

一般不会采用“从非死锁进程处抢夺资源”和“终止系统所有进程”的办法。

因此,应该选择(D)、(E)。

4.在多进程的并发系统中,有关进程间的关系的正确说法是_________。

(A)都是逻辑上无关的(B)有些可能逻辑上无关的

(C)都是逻辑上有关的(D)有些可能逻辑上有关的

(E)它们之间都直接或间接发生关系

【答案】BDE

【解析】在多进程的并发系统中,进程间有些可能逻辑上无关,而有些可能逻辑上相关,但由于,它们之间的并行运行,它们之间都直接或间接的发生关系。

因此,应该选择(B)、(D)、(E)。

5.通常使用的死锁防止策略有_________。

(A)动态分配资源(B)静态分配资源

(C)按序分配资源(D)非剥夺式分配资源

(E)剥夺式分配资源

【答案】BCE

【解析】通常使用的死锁防止策略有:

(1)静态分配资源。

静态分配资源是指进程必须在开始执行前就申请它所要的全部资源,仅当系统能满足进程的资源申请要求且把资源分配给进程后,该进程才开始执行。

即使得四个必要条件中的“占有并等待资源”和“循环等待资源”两个条件不成立,从而防止死锁的发生。

静态分配资源的策略实现起来简单,但却降低了资源的利用率。

(2)按序分配资源。

对系统中每一个资源给出一个编号,规定任何一个进程申请两个以上资源时,总是先申请编号小的资源,再申请编号大的资源。

按这种策略分配资源可破坏“循环等待资源”的条件,达到防止死锁的目的。

(3)剥夺式分配资源。

剥夺式分配策略是当一个进程申请资源得不到满足时则可从另一个进程那里去抢夺。

但这种分配策略只适用于对处理器和主存资源的分配,显然这种分配策略是破坏了非抢占条件以防止死锁的发生。

因此,应该选择(B)、(C)、(E)。

四、是非判断题

1.消息缓冲机制中,发送进程和接收进程之间存在有用来存放被传送消息的缓冲区,所以,它们之间存在对临界资源的使用问题。

()

【答案】正确。

【解析】使用消息缓冲机制传送数据时,这两个通信进程必须满足如下条件:

a.在发送进程把消息写入缓冲区和把缓冲区挂入消息队列时,应禁止其他进程对该缓冲区消息队列的访问。

同理,当接收进程正从消息队列中取消息缓冲时,也应禁止其他进程对该队列的访问。

b当缓冲区中无消息时,接收进程不能接收到消息。

2.假设二个进程的同步算法如下:

设初值s1=1,s2=n,s3=0

进程1进程2

p(s2)p(s3)

p(sl)p(s1)

……

v(s2)v(s3)

v(sl)v(sl)

在上述同步算法中,PV原语的顺序都可颠倒。

()

【答案】错误。

【解析】V原语的顺序可以颠倒,而P原语的顺序不能随便颠倒,如果颠倒了,可能会引起进程发生死锁。

例如,进程1中p(s2)和p(s1)的顺序颠倒了,当某个时刻s2=0时,此时两个进程就发生死锁。

3.信号量作为一种资源对其操作不当,可造成系统的死锁。

()

【答案】正确

【解析】下面的例子就说明了此问题:

假设二个进程的同步算法如下:

设初值s1=1,s2=0,s3=1

进程1进程2

p(s1)p(s3)

p(s2)p(s1)

……

v(s2)v(s3)

v(sl)v(sl)

在该同步算法中,可能会引起进程发生死锁。

例如,当某个时刻s2=0时,进程1首先执行p(s1)和p(s2),则进程1变为等待状态;进程2一旦执行p(s3),再执行p(s1),进程2也将变为等待状态,此时两个进程就发生死锁。

五、简答题

1.简述信号量S的物理含义:

【解析】

S>0时,S表示可使用的资源数;或表示可使用资源的进程数。

S=0时,表示无资源可供使用;或表示不允许进程再进入临界区。

S<0时,|S|表示等待使用资源的进程个数;或表示等待进入临界区的进程个数。

当S>0时,调用P(S)的进程不会等待;调用V(S)后使可用资源数加1或使可用资源的进程数加1。

当S<=0时,调用P(S)的进程必须等待;调用V(S)后将释放一个等待使用资源者或释放一个等待进入临界区者。

2.PV操作本身的如何定义的?

【解析】

PV操作是对信号量的操作,而信号量可以简单地理解为只允许PV操作对其操作的整型变量。

它们的定义如下,其中S是信号量。

P(S):

将S信号量值减1,若结果小于0,则调用P(S)的进程被置成等待状态;否则该进程继续执行。

V(S):

将信号量S值加1,若结果不大干0,则释放一个等待信号量S的进程,使其变为就绪状态。

P操作和V操作可表示成如下两个过程:

ProcedureP(VarS:

Semaphore);

beginS:

=S-1;

ifS<0thenW(S)

end;{P}

ProcedureV(VarS:

Semaphore);

beamS:

=S+1

ifS<=0thenR(S)

end;{V}

其中W(S)表示将调用过程的进程置成等待状态;R(S)表示释放一个等待信号量S的进程。

信号量的值应在初始化时确定。

3.用PV操作如何解决N个进程的互斥问题。

【解析】

设信号量S的初值为1,则n个进程的互斥问题可以采用以下方法解决:

P1进程P2进程…Pn进程

P(S)P(S)P(S)

临界区临界区临界区

V(S)V(S)V(S)

4.如果一个生产者和一个消费者他们共享的缓冲器(B)容量为可以存放n件物品,如何用PV操作来实现他们正确地同步。

【解析】

设信号量empty(表示缓冲器中可存放多少件物品)的初值为n,信号量full(表示缓冲器中存有几件物品)的初值为0。

当缓冲器中没有放满n件物品时,生产者调用P(empty)都不会成为等待状态而可把物品存入缓冲器。

但当缓冲器中已经有n件物品,生产者想再存入一件物品将被拒绝。

每存入一件物品后,由于调用V(full),故empty的值表示缓冲器中可用的物品数,只要full>0,消费者调用P(full)后总可去取物品。

每取走一件物品后,由于调用V(empty),便增加了一个可用来存放物品的位置。

用指针k和t分别指示生产者往缓冲器存物品和消费者从缓冲器中取物品的相对位置,它们的初值为0,那么,一个生产者和一个消费者共用容量为n的缓冲器时,可如下进行同步工作:

设信号量empty,full,初值为empty=n,full=0;整型变量k,t,初值k=t=0。

生产者进程:

begin

L1:

produceaproduct;

P(empty);

B[k]:

=product;

k:

=(k十1)modn;

V(full);

gotoL1

end;

消费者进程:

begin

L2:

P(full);

takeaproductfromB[t];

t:

=(t+1)modn;

V(empty);

consume;

gotoL2

end

5.进程通信方式有两种即:

直接通信、间接通信,给出各自使用的原语形式。

【解析】

直接通信:

这种通信是固定在一对进程之间。

例如,进程A把信件只发送给进程B,而进程B也只接收进程A的信件。

那么,“send”和“receive”两条原语的形式如下:

send(B,M)把信件M发送给进程B

receive(A,X)接收来自进程A的信件且存入X中

进程A和进程B通过“send”和“receive”操作而自动建立了一种联结。

间接通信:

这种通信是以信箱为媒体来实现通信的,只要接收信件的进程设立一个信箱,那么,若干个进程都可向同一个进程发送信件。

利用信箱通信时,“send”,“receive”原语中应给出信箱名,即:

send(N,M)把信件M送入信箱N中

receive(N,X)从信箱N中取出一封信存入X

6.产生死锁的原因是什么?

【解析】

(1)系统资源不足;

(2)进程推进顺序不合适。

在早期的系统中,由于系统规模较小,结构简单,以及资源分配大多采用静态分配法,使得操作系统死销问题的严重性未能充分暴露出来。

但今天由于多道程序系统,以至于数据库系统的出现,系统中的共享性和并行性的增加,软件系统变得日益庞大和复杂等原因,使得系统出现死锁现象的可能性大大增加。

7.死锁发生的必要条件有哪些?

【解析】

发生死锁的必要条件有四点:

互斥条件、不可抢占条件、部分分配条件和循环等待条件。

(1)互斥条件:

系统中存在一个资源一次只能被一个进程所使用;

(2)非抢占条件:

系统中存在一个资源仅能被占有它的进程所释放,而不能被别的进程强行抢占;

(3)占有且等待条件:

系统中存在一个进程已占有了分给它的资源,但仍然等待其它资源;

(4)循环等待条件:

在系统中存在一个由若干进程形成的环形请求链,其中的每一个进程均占有若干种资源中的某一种,同时每一个进程还要求(链上)下一个进程所占有的资源。

8.阐述预先静态分配法是如何进行死锁预防的。

【解析】

Havender(1968)提出的第一个策略就是预先静态分配法,这是针对部分分配条件的策略。

要求每一个进程在开始执行前就申请它所需要的全部资源,仅当系统能满足进程的资源要求且把资源分配给进程后,该进程才能开始执行。

这个策略毫无疑问能够防止死锁的发生,因为这样做破坏了部分分配条件,但是它导致了严重的资源浪费。

例如一个进程可能在运行到最后时需要一台打印机打印结果数据,但必须在进程运行前就把打印机分配给它,而且在进程运行的过程中并不使用打印机。

9.阐述按序分配资源法是如何进行死锁预防的。

【解析】

Havender提出的第二个策略是有序资源使用法,这是针对循环等待条件的,即系统设计者把系统中所有资源类都分给一个唯一的序号,如输入机=1,打印机=2,穿孔输出机=3,磁带机=4,等等。

并且要求每个过程均应严格按递增的次序请求资源。

亦即,只要进程提出请求资源,那么以后它只能请求排列在其后面的那些资源,而不能再要求序号低的那些资源。

不难看出,由于对资源的请求作出了这种限制,在系统中就不可能形成几个进程对资源的环形请求链,破坏了循环等待条件。

这种方法由于不是采用预先静态分配方法,而是基本上基于动态分配方法,所以资源利用率较前一方法提高了,特别是小心地安排资源序号,把一些各作业经常用到的、比较普通的资源安排成低序号,把一些比较贵重或稀少的资源安排成高序号,便可能使最有价值的资源的利用率大为提高。

因为高序号的资源往往等到进程真正需要时,才提出请求分配给进程。

而低序号的资源,在进程即使暂不需要的情况下,但是进程需要使用高序号资源,所以在进程请求分配高序号资源时,不得不提前同时请求以后需要的低序号资源,从而造成资源空闲等待的浪费现象。

10.为什么说不能通过破坏“互斥条件”来预防死锁。

【解析】

破坏互斥条件,即允许多个进程同时访问资源。

但这受到资源本身的使用方法所决定,有些资源必须互斥访问,不能同时访问。

如对公用数据访问必须是互斥的。

又如几个进程同时使用打印机,一个进程打印一行(或几行),这种使用方式也是不可思议的,因此也必须互斥使用。

所以企图通过破坏互斥条件来防止死锁是不

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 法律资料

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1