第三章死锁习题一、填空题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)可再现性——只要初始条件相同,无论进程在什么时间执行都产生相同的结果。