《操作系统》习题集:第6章 死锁
- 格式:pdf
- 大小:451.48 KB
- 文档页数:4
操作系统死锁操作系统中死锁是必考的一个题目。
下面由店铺为大家整理了操作系统的死锁的相关知识,希望对大家有帮助!一、操作系统死锁的概念所谓死锁<DeadLock>: 是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等竺的进程称为死锁进程.由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象死锁。
一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每个线程都在等待被其他线程占用并堵塞了的资源。
例如,如果线程A锁住了记录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发生了死锁现象。
计算机系统中,如果系统的资源分配策略不当,更常见的可能是程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。
二、产生死锁的原因(1) 因为系统资源不足。
(2) 进程运行推进的顺序不合适。
(3) 资源分配不当等。
如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。
其次,进程运行推进顺序与速度不同,也可能产生死锁。
三、产生死锁的四个必要条件(1) 互斥条件:一个资源每次只能被一个进程使用。
(2) 请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。
(3) 不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。
(4) 循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。
这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。
四、死锁的解除与预防理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。
所以,在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。
精品文档3、何谓死锁?产生死锁的原因和必要条件是什么?死锁:两个或两个以上的进程都无限止地等待永远不会发生的事件而出现的一种状态。
产生死锁的原因:(1)竞争资源。
为多个进程所共享的资源不足,引起它们对资源的竞争而产生死锁;(2)进程推进顺序不当。
进程运行过程中,请求和释放资源的顺序不当,而导致死锁。
产生死锁必要条件:(1)互斥条件;一个资源每次仅能被一个进程使用,进程一旦申请到了资源后占为己有,则排出其它进程享受该资源。
(2)请求和保持条件;已分配到了一些资源的进程又可以申请新的资源,进程因未分配到新的资源也不释放自己占有的资源。
(3)非剥夺条件;已分配给一进程的资源不可剥夺,进程获得的资源尚未使用完毕之前,只能被占者自己释放,其它进程不能强行占用。
(4)循环等待条件;存在由两个或两个以上进程组成的循环等待链,链中的每一个进程都在等待相邻进程占用的资源。
4、引入缓冲的主要原因是什么,缓冲分为哪几种类型?在操作系统中,引入缓冲的主要原因,可归结为以下几点:(1)改善CPU与I/O设备间速度不匹配的矛盾(2)可以减少对CPU的中断频率,放宽对中断响应时间的限制(3)提高CPU和I/O设备之间的并行性缓冲有硬件缓冲和软件缓冲之分。
硬件缓冲是指以专用的寄存器作为缓冲器。
软件缓冲是指在操作系统的管理下,在内存中划出若干个单元作为缓冲区。
软件缓冲的好处是易于改变缓冲区的大小和数量,但占用了一部分内存空间。
软件缓冲根据缓冲区设置个数的多少,可分为单缓冲、双缓冲和多缓冲。
根据缓冲区的从属关系,可以分为专用缓冲区和缓冲池。
5、有几种I/O控制方式?有四种I/O控制方式,即程序I/O控制方式、中断驱动I/O控制方式、直接存储器访问DMA控制方式及I/O通道控制方式。
程序I/O方式(适用于结构简单,只需少量硬件的电路) 中断驱动I/O控制方式(适用于高效的场合,例如办公室) 直接存储器访问DMA I/O控制方式(适用于无须CPU介入的控制器来控制内存与外设之间的数据交流的场合) I/O通道控制方式(适用于以字节为单位的干预,同时实现CPU,通道和I/O设备三者并行操作的场合).。
操作系统--精髓与设计原理(第⼋版)第六章复习题答案操作系统--精髓与设计原理(第⼋版)第六章复习题答案6.1 给出可重⽤资源和可消耗资源的例⼦。
可重⽤资源是指⼀次仅供-⼀个进程安全使⽤且不因使⽤⽽耗尽的资源。
进程得到资源单元并使⽤后,会释放这些单元供其他进程再次使⽤。
可重⽤资源的例⼦包括处理器、I/O 通道、内存和外存、设备,以及诸如⽂件、数据库和信号量之类的数据结构。
可消耗资源是指可被创建(⽣产)和销毁(消耗)的资源。
某种类型可消耗资源的数量通常没有限制,⽆阻塞⽣产进程可以创建任意数量的这类资源。
消费进程得到-⼀个资源时,该资源就不再存在。
可消耗资源的例⼦有中断、信号、消息和I/O缓冲区中的信息。
6.2 产⽣死锁的三个必要条件是什么?互斥。
⼀次只有⼀个进程可以使⽤⼀个资源。
其他进程不能访问已分配给其他进程的资源。
占有且等待。
当⼀个进程等待其他进程时,继续占有已分配的资源。
不可抢占。
不能强⾏抢占进程已占有的资源。
6.3 产⽣死锁的 4个条件是什么?循环等待。
存在⼀个闭合的进程链,每个进程⾄少占有此链中下⼀个进程所需的⼀个资源。
6.4 如何防⽌占有且等待条件?为预防占有且等待的条件,可以要求进程⼀次性地请求所有需要的资源,并阻塞这个进程直到所有请求都同时满⾜。
这种⽅法有两个⽅⾯的低效性。
⾸先,⼀个进程可能被阻塞很长时间,以等待满⾜其所有的资源请求。
⽽实际上,只要有⼀部分资源,它就可以继续执⾏。
其次,分配给⼀个进程的资源可能会在相当长的⼀段时间不会被该进程使⽤,且不能被其他进程使⽤。
另⼀个问题是⼀个进程可能事先并不知道它所需要的所有资源。
6.5 给出防⽌不可抢占条件的两种⽅法。
1. 占有某些资源的⼀个进程进⼀步申请资源时若被拒绝,则该进程必须释放其最初占有的资源,必要时可再次申请这些资源和其他资源。
2. ⼀个进程请求当前被另⼀个进程占有的⼀个资源时,操作系统可以抢占另⼀个进程,要求它释放资源。
(只有在任意两个进程的优先级都不同时,这种⽅案才能预防死锁)。
第五章死锁一.选择题1.为多道程序提供的可共享资源不足时,可能出现死锁。
但是,不适当的 C 也可能产生死锁。
(A)进程优先权(B)资源的线性分配(C)进程推进顺序(D)分配队列优先权2.采用资源剥夺法可以解除死锁,还可以采用 B 方法解除死锁。
(A)执行并行操作(B)撤销进程(C)拒绝分配新资源(D)修改信号量3.产生死锁的四个必要条件是:互斥、 B 循环等待和不剥夺。
(A)请求与阻塞(B)请求与保持(C)请求与释放(D)释放与阻塞4.在分时操作系统中,进程调度经常采用算法。
(A)先来先服务(B)最高优先权(C)时间片轮转(D)随机5.资源的按序分配策略可以破坏条件。
(A)互斥使用资源(B)占有且等待资源(C)非抢夺资源(D)循环等待资源6.在 C 情况下,系统出现死锁。
(A)计算机系统发生了重大故障(B)有多个封锁的进程同时存在(C)若干进程因竞争而无休止地相互等待他方释放已占有的资源(D)资源数远远小于进程数或进程同时申请的资源数量远远超过资源总数7。
银行家算法在解决死锁问题中是用于 B 的。
(A)预防死锁(B)避免死锁(C)检测死锁(D)解除死锁8.支持多道程序设计的操作系统在运行过程中,不断地选择新进程运行来实现CPU的共享,但其中不是引起操作系统选择新进程的直接原因。
(A)运行进程的时间片用完(B)运行进程出错(C)运行进程要等待某一事件发生(D)有新进程进入就绪队列9. 在下列解决死锁的方法中,属于死锁预防策略的是 B 。
(A)银行家算法(B)有序资源分配法(C)死锁检测法(D)资源分配图化简法二、综合题1.若系统运行中出现如表所示的资源分配情况,改系统是否安全?如果进程P2此时提出资源申请(1,2,2,2),系统能否将资源分配给它?为什么?资源情况进程Allocation Need AvailableP0 0 0 3 2 0 0 1 2 1 6 2 2P1 1 0 0 0 1 7 5 0P2 1 3 5 4 2 3 5 6P3 0 3 3 2 0 6 5 2P4 0 0 1 4 0 6 5 6(2)资源情况进程Allocation Need AvailableP0 0 0 3 2 0 0 1 2 0 4 0 0P1 1 0 0 0 1 7 5 0P2 2 5 7 6 1 1 3 4P3 0 3 3 2 0 6 5 2P4 0 0 1 4 0 6 5 61.有相同类型的5个资源被4个进程所共享,且每个进程最多需要2个这样的资源就可以运行完毕,试问该系统是否会由于对这种资源的竞争而产生死锁。
考研操作系统-死锁(总分:62.00,做题时间:90分钟)一、单项选择题(总题数:8,分数:16.00)1.以下关于资源分配图的描述中正确的是( )。
A.有向边包括进程指向资源类的分配边和资源类指向进程申请边两类B.矩阵框表示进程,其中的圆点表示申请同一类资源的各个进程C.圆圈结点表示资源类D.资源分配图是一个有向图,用于表示某时刻系统资源与进程之间的状态√2.以下关于死锁的叙述中正确的是( )。
A.死锁的出现只与资源的分配策略有关B.死锁的出现只与并发进程的执行速度有关C.死锁是系统的一种僵持状态,任何进程无法继续运行D.进程竞争互斥资源是产生死锁的根本原因√3.用银行家算法避免死锁时,检测到( )时才分配资源。
A.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需要的最大资源量B.进程首次申请资源时对资源的最大需求量超过系统现存的资源量C.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需要的最大资源量√D.进程已占用的资源数与本次申请的资源数之和超过对资源的最大需求量4.通过终止进程或抢夺资源可以解除死锁,下面说法中错误的是( )。
A.一次终止一个进程比终止所有涉及死锁进程的耗费大√B.检测死锁适用于不经常发生死锁的系统中,不适用于经常发生死锁的系统中C.终止进程可以终止涉及死锁的所有进程或一次终止一个进程D.抢夺资源时从执行时间短的进程中抢夺可以避免进程“死”现象5.死锁的4个必要条件中,无法破坏的是( )。
A.环路等待资源B.互斥使用资源√C.占有且等待资源D.非抢夺式分配6.静态分配破坏了( )两个死锁的必要条件。
A.占有且等待资源和环路等待资源√B.互斥使用资源和非抢夺式分配C.占有且等待资源和互斥使用资源D.环路等待资源和互斥使用资源7.死锁的防止是根据( )采取措施实现的。
A.防止系统进入不安全状态B.配置足够的系统资源C.破坏产生死锁的四个必要条件之一√D.使进程的推进顺序合法8.按序分配资源是为了( )。
习题二参考答案4、答:在生产者—消费者问题中,Producer进程中P(empty)和P(mutex)互换先后次序。
先执行P(mutex),假设成功,生产者进程获得对缓冲区的访问权,但如果此时缓冲池已满,没有空缓冲区可供其使用,后续的P(empty)原语没有通过,Producer阻塞在信号量empty 上,而此时mutex已被改为0,没有恢复成初值1。
切换到消费者进程后,Consumer进程执行P(full)成功,但其执行P(mutex)时由于Producer正在访问缓冲区,所以不成功,阻塞在信号量mutex上。
生产者进程和消费者进程两者均无法继续执行,相互等待对方释放资源,会产生死锁。
在生产者和消费者进程中,V操作的次序无关紧要,不会出现死锁现象。
5、答:6、答:设信号量sp用于控制对盘子的互斥操作,信号量sg1用于计数,表示盘子中的苹果数目,信号量sg2用于计数,表示盘子中的桔子数目。
Semaphore sp=1,sg1=0,sg2=0dad(){while(1){ prepare an apple;p(sp);put an apple on the plate;v(sg2);}}mom(){while(1){prepare an orange;p(sp);put an orange on the plate;v(sg1);}}son(){while(1){p(sg1);take an orange from the plate;v(sg);eat the orange;}}daughter(){while(1){p(sg2);take an apple from the plate;v(sg);eat the apple;}}7、答:为了使写者优先,在原来的读优先算法基础上增加一个初值为1的信号量S,使得当至少有一个写者准备访问共享对象时,它可使后续的读者进程等待写完成;初值为0的整型变量writecount,用来对写者进行计数;初值为1的互斥信号量wmutex,用来实现多个写者对writecount的互斥访问。
死锁习题一、填空题2.死锁产生的原因是。
3.产生死锁的四个必要条件是、、、。
二、单项选择题1.两个进程争夺同一个资源。
(A)一定死锁(B)不一定死锁(C)不死锁(D)以上说法都不对4.如果发现系统有的进程队列就说明系统有可能发生死锁了。
(A)互斥(B)可剥夺(C)循环等待(D)同步5.预先静态分配法是通过破坏条件,来达到预防死锁目的的。
(A)互斥使用资源/循环等待资源(B)非抢占式分配/互斥使用资源(C) 占有且等待资源/循环等待资源(D)循环等待资源/互斥使用资源7.下列关于死锁的说法中,正确的是?1)有环必死锁; 2)死锁必有环; 3)有环无死锁; 4)死锁也无环8.资源有序分配法的目的是?1)死锁预防; 2)死锁避免; 3)死锁检测; 4)死锁解除8.死锁的预防方法中,不太可能的一种方法使()。
A 摈弃互斥条件B 摈弃请求和保持条件C 摈弃不剥夺条件D 摈弃环路等待条件10. 资源的按序分配策略可以破坏()条件。
A 互斥使用资源B 占有且等待资源C 不可剥夺资源D 环路等待资源三、多项选择题1.造成死锁的原因是_________。
(A)内存容量太小(B)系统进程数量太多,系统资源分配不当(C)CPU速度太慢(D)进程推进顺序不合适(E)外存容量太小2.下列叙述正确的是_________。
(A)对临界资源应采取互斥访问方式来实现共享(B)进程的并发执行会破坏程序的“封闭性”(C)进程的并发执行会破坏程序的“可再现性”(D)进程的并发执行就是多个进程同时占有CPU(E)系统死锁就是程序处于死循环3.通常不采用_________方法来解除死锁。
(A)终止一个死锁进程(B)终止所有死锁进程(C)从死锁进程处抢夺资源(D)从非死锁进程处抢夺资源(E)终止系统所有进程5.通常使用的死锁防止策略有_________。
(A)动态分配资源(B)静态分配资源(C)按序分配资源(D)非剥夺式分配资源(E)剥夺式分配资源四、名词解释1死锁2饥饿3死锁防止4死锁避免5安全序列四、简答题1.产生死锁的原因是什么?2.死锁发生的必要条件有哪些?3.阐述预先静态分配法是如何进行死锁预防的。
第六章习题翻译第一部分复习题6.1给出可重用资源和可消费资源的例子。
答:可重用资源:处理器,I/O通道,主存和辅存,设备以及诸如文件,数据库和信号量之类的数据结构。
可消费资源:中断,信号,消息和I/O缓冲区中的信息。
6.2可能发生死锁所必须的三个条件是什么?答:互斥,占有且等待,非抢占。
6.3产生死锁的第4个条件是什么?答:循环等待。
6.4如何防止占有且等待的条件?答:可以要求进程一次性地请求所有需要的资源,并且阻塞这个资源直到所有请求都同时满足。
6.5给出防止无抢占条件的两种方法。
答:第一种,如果占有某些资源的一个进程进行进一步资源请求被拒绝,则该进程必须释放它最初占用的资源,如果有必要,可再次请求这些资源和另外的资源。
第二种,如果一个进程请求当前被另一个进程占有的一个资源,则操作系统可以抢占另一个进程,要求它释放资源。
6.6如何防止循环等待条件?答:可以通过定义资源类型的线性顺序来预防。
如果一个进程已经分配到了R类型的资源,那么它接下来请求的资源只能是那些排在R类型之后的资源类型。
6.7死锁避免,检测和预防之间的区别是什么?答:死锁预防是通过间接地限制三种死锁必要条件的至少一个或是直接地限制循环等待的发生来避免死锁的出现。
死锁避免允许可能出现的必要条件发生,但是采取措施确保不会出现死锁的情况。
而死锁检测允许资源的自由分配,采取周期性的措施来发现并处理可能存在的死锁情况。
第二部分习题6.1写出图6.1(a)中死锁的四个条件。
解:互斥:同一时刻只有一辆车可以占有一个十字路口象限。
占有且等待:没有车可以倒退;在十字路口的每辆车都要等待直到它前面的象限是空的。
非抢占: 没有汽车被允许挤开其他车辆。
循环等待: 每辆汽车都在等待一个此时已经被其他车占领的十字路口象限。
6.2按照6.1节中对图6.2中路径的描述,给出对图6.3中6种路径的简单描述。
解:1.Q 获得 B 和A, 然后释放 B 和 A. 当 P 重新开始执行的时候, 它将会能够获得两个资源。
第6章死锁-习题集一、选择题1. C2. C3. C4. C //产生死锁的原因是系统资源不足及进程推进顺序不正确5. B6. D7. B8. C9. C10. D //有序资源分配法的实现思想是将系统中的所有资源都按类型赋予一个编号(如打印机1,磁带机为2等),要求每一个进程均严格按照编号递增的次序来申请资源,同类资源一次申请完。
这样不会造成循环等待。
11. A //互斥条件是资源本身固有的特性。
12. B //当每个都获得2台打印机且系统中剩余打印机不少于1台时,系统不会发生死锁,即11-2N>=1,由此知N<=5。
//本注:N=1,空闲11-3*1=8,不死锁N=2,空闲11-3*2=5,不死锁N=3,空闲11-3*3=2,不死锁N=4,每个2台,空闲11-2*4=3,不死锁N=5,每个2台,空闲11-2*5=1,不死锁N=6,5个进程2台,1个进程1台,无空闲,死锁!13. C //同上例。
8-2K>=1,K<=3.5,取整为4。
14. B15. B16. B //本注:破坏了死锁必要条件“环循等待”,属于“死锁预防”17. C18. D //本注:P2和P3无法满足资源需要,都需资源R2三个。
二、综合应用题1.所谓死锁是指多个进程因竞争系统资源或相互通信而处于永久阻塞状态,若无外力作用,这些进程都将无法向前推进。
产生死锁的原因是:一是由多进程共享的资源不足而引起竞争资源;二是由于进程在运行过程中具有异步性,进程推进顺序非法。
2.必要条件如下:●互斥条件。
指在一段时间内某资源仅为一个进程所占有。
●不剥夺条件。
指进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,而只能由该进程自己释放。
●部分已分配条件(Hold and Wait):指进程每次申请它所需要的一部分资源,在等待分配新资源的同时,进程继续占有已分配到的资源。
●环路等待条件。
指存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。
操作系统---死锁操作系统死锁在计算机操作系统的世界里,有一个颇为棘手的问题,那就是死锁。
死锁就像是交通堵塞中的死结,一旦形成,整个系统的运行就会陷入僵局,无法正常推进任务。
那到底什么是死锁呢?简单来说,死锁是指多个进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的僵持局面。
想象一下,有两个小朋友,小明和小红,他们都在玩积木。
小明手里拿着红色的积木,想要蓝色的积木,而蓝色的积木在小红手里。
小红呢,拿着蓝色的积木,想要红色的积木,他们谁也不愿意先把自己手里的积木给对方,于是就僵持在那里,这就是一个简单的死锁例子。
在操作系统中,资源可以分为两类,一类是可剥夺资源,比如 CPU 资源,系统可以强行剥夺正在使用 CPU 的进程,将其分配给其他更紧急的进程;另一类是不可剥夺资源,像打印机、磁带机等,一旦进程获得了这类资源,就只能由该进程主动释放。
死锁通常就发生在多个进程对不可剥夺资源的竞争中。
死锁的发生需要满足四个必要条件。
第一个条件是互斥使用,也就是说资源在同一时刻只能被一个进程或线程使用。
比如前面提到的打印机,如果两个进程能同时使用同一台打印机打印,那就乱套了,所以打印机这种资源必须是互斥使用的。
第二个条件是请求和保持,进程在持有部分资源的同时,还请求获取其他被占用的资源。
还是拿小明和小红举例,小明拿着红色积木还想要蓝色积木,小红拿着蓝色积木还想要红色积木,这就是请求和保持。
第三个条件是不可剥夺,进程已经获得的资源在未使用完之前不能被剥夺,这是导致死锁的关键因素之一。
最后一个条件是循环等待,存在一组进程,每个进程都在等待下一个进程所持有的资源,形成一个环形的等待链。
那么,死锁会给操作系统带来什么样的危害呢?首先,死锁会导致系统的资源利用率大幅降低。
因为陷入死锁的进程占用着资源却不进行有效的工作,其他需要这些资源的进程无法获得资源,从而使得整个系统的工作效率低下。
其次,死锁会增加系统的开销。
为了检测和解除死锁,操作系统需要花费大量的时间和计算资源,这无疑增加了系统的负担。
操作系统课后习题答案问题一:简述进程和线程的区别。
进程是操作系统进行资源分配和调度的一个独立单位,它是程序在数据集上的一次动态执行过程。
线程是进程中的一个实体,是CPU调度和分派的基本单位,比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
问题二:什么是死锁?如何避免死锁?死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。
避免死锁的方法包括:1. 互斥条件:确保系统资源足够,以避免多个进程争夺同一资源。
2. 请求和保持条件:设计资源分配策略,确保进程不会在请求新资源的同时保持已分配的资源。
3. 不剥夺条件:一旦资源被分配给某进程,除非该进程自愿释放资源,否则系统不应强制剥夺。
4. 循环等待条件:通过资源分配图检测循环等待并进行处理。
问题三:描述操作系统中的分页和分段机制。
分页机制是操作系统用来实现虚拟内存的一种技术,它将物理内存分割成固定大小的页,并将这些页与进程的虚拟地址空间中的页表项关联起来。
当进程访问一个不在物理内存中的虚拟地址时,操作系统会触发一个缺页中断,将所需的页从辅助存储器加载到物理内存中。
分段机制则是将程序的地址空间划分为多个段,每个段可以是不同的大小,并且可以独立地被加载和链接。
段表项包含了段的基地址和段的长度信息。
当程序访问一个段内的地址时,操作系统将虚拟地址转换为物理地址。
问题四:什么是文件系统?它有什么作用?文件系统是操作系统用于有效地存储、组织、管理和访问磁盘上的数据的一种系统。
它的作用包括:1. 数据持久性:确保即使在系统崩溃或电源故障后,数据也不会丢失。
2. 数据共享:允许多个用户或进程访问和共享数据。
3. 抽象:为用户和应用程序提供统一的接口来访问存储在磁盘上的数据。
4. 安全性:通过权限控制保护数据不被未授权访问。
《现代操作系统》精读与思考笔记第六章死锁 本系列博⽂是《现代操作系统(英⽂第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正⽂精要部分的摘录理解和课后习题精解,因此不会事⽆巨细的全⾯摘抄,仅仅根据个⼈情况进⾏记录和推荐。
由于是英⽂版,部分内容会使⽤英⽂原⽂。
课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,⽽是能够引起思考加深理解的题⽬。
为了保证解答的正确性,每道题都会附上原书解答,⽽中⽂部分会适当加⼊⾃⼰的见解。
原书答案(需注册) 最初在翻这本书的⽬录时还在想,“死锁”这个主题安排在“进程”主题下就可以了嘛,为何要单列出⼀章?与动辄近百页的其他章节⽐,这⼀章只有区区三⼗来页⽽已,看似微不⾜道。
本章开篇便告诉读者,“死锁”不仅在进程并⾏时会出现,在数据库系统甚⾄是办公室的设备共⽤时也会出现,使⽤场景很⼴泛,也难怪成为⼀个独⽴章节。
也正因适⽤范围⼴泛,⽽⽅法是抽象的,这章特别强调,在决定使⽤某种避免或消除死锁的策略前,必须结合具体场景判断是否适⽤。
1.鸵鸟算法(P441) 所谓的鸵鸟算法,就是对问题视若不见。
虽然数学家认为根本不可接受,但考虑到⼀个不常发⽣并且发⽣后的解决开销很⼤的事件(如本章的死锁),反⽽是⼀个很好的复杂度与性能的折衷。
相⽐之下,尽管该书后⽂提到的避免和解决死锁的⽅法⽐较有效,⽐如⼴为⼈知的银⾏家算法(P451~454),但实⽤性实在有限。
2.spooling的打印机仍然可能造成死锁(P454~455) 虽然使⽤打印机对应的deamon进程唯⼀地与打印机交互、其他进程的打印任务仅仅是将需要打印的⽂件放⼊deamon进程指定的⼀个⽬录下,打印机这⼀设备不再会导致死锁;然⽽,这些待打印的⽂件是需要占⽤空间的,如果磁盘空间不⾜以容纳所有待打印的⽂件,仍然会造成死锁。
习题2再次提到了这个情形。
第6章死锁-习题集
一、选择题
1.在操作系统中,死锁出现是指()。
【*,★,联考】
A. 计算机系统发生重大故障
B. 资源个数远远小于进程数
C. 若干进程因竞争资源而无限等待其他进程释放已占有的资源
D. 进程同时申请的资源数超过资源总数
2.在()的情况下,系统出现死锁。
【*,联考】
A. 计算机系统发生了重大故障
B. 有多个封锁的进程同时存在
C. 若干进程因竞争资源而无休止地相互等待他方释放已占有的资源
D. 资源数远远小于进程数或进程同时申请的资源数远远超过资源总数
3.当出现()情况下,系统可能出现死锁。
【*,联考】
A. 进程释放资源
B. 一个进程进入死循环
C. 多个进程竞争资源出现了循环等待
D. 多个进程竞争共享型设备
4.为多道程序提供的可共享资源不足时,可能出现死锁。
但是,不适当的()也可能产生死锁。
【**,联
考】
A. 进程优先级
B. 资源线性分配
C. 进程推进顺序
D. 分配队列优先权
5.采用资源剥夺法可以解除死锁,还可以采用()方法解除死锁。
【*,★,联考】
A. 执行并行操作
B. 撤销进程
C. 拒绝分配新资源
D. 修改信号量
6.死锁产生的原因之一是()。
【*,联考】
A. 系统中没有采用SPOOLing技术
B. 使用的P、V操作过多
C. 有共享资源存在
D. 资源分配不当
7.产生死锁的4个必要条件是:互斥、()、循环等待和不剥夺。
【*,联考,?】
A. 请求与阻塞
B. 请求与保持
C. 请求与释放
D. 释放与阻塞
8.一个进程在获得资源后,只能在使用完资源后由自己释放,这属于死锁必要条件的()。
【*,联考】
A. 互斥条件
B. 请求和释放条件
C. 不剥夺条件
D. 环路等待条件
9.死锁的预防是根据()而采取措施实现的。
【*,★,联考】
A. 配置足够的系统资源
B. 使进程的推进顺序合理
C. 破坏死锁的四个必要条件之一
D. 防止系统进入不安全状态
10.资源的有序分配策略可以破坏死锁的()条件。
【**,★,联考】
A. 互斥
B. 请求和保持
C. 不剥夺
D. 循环等待
11.发生死锁的必要条件有4个,要防止死锁的发生,可以通过破坏这4个必要条件之一来实现,但破坏()
条件是不太实际的。
【**,联考】
A. 互斥
B. 不可抢占
C. 部分分配
D. 循环等待
12.某系统中有11台打印机,N个进程共享打印机资源,每个进程要求3台。
当N的取值不超过()时,系
统不会发生死锁。
【**,★,联考】
A. 4
B. 5
C. 6
D. 7
13.某计算机系统中有8台打印机,由K个进程竞争使用,每个进程最多需要3台打印机,该系统可能会发生死锁
的K的最小值是()。
【**,09考研】
A. 2
B. 3
C. 4
D. 5
14.银行家算法在解决死锁问题中是用于()的。
【*,★,联考】
A. 预防死锁
B. 避免死锁
C. 检测死锁
D. 解除死锁
15.某系统中有3个并发进程,都需要同类资源4个,试问该系统不会发生死锁的最少资源数是()。
【**,
联考】
A. 9
B. 10
C. 11
D. 12
16.在下列解决死锁的方法中,属于死锁预防策略的是()。
【**,★,联考】
A. 银行家算法
B. 有序资源分配法
C. 死锁检测法
D. 资源分配图化简法
17.死锁定理是用于处理死锁的()方法。
【*,联考】
A. 预防死锁
B. 避免死锁
C. 检测死锁
D. 解除死锁
18.某时刻进程的资源使用情况如下表所示,此时的安全序列是()。
【**,★,11考研】
A. P1,P2,P3,P4
B. P1,P3,P2,P4
C. P1,P4,P3,P2
D. 不存在
二、综合应用题
1.什么是死锁,产生死锁的原因是什么?【*,联考】
2.产生死锁的必要条件是什么?解决死锁问题沿采用哪几种措施?【*,★,联考】
3.在某一时刻,系统中既无运行态进程又无就绪态进程,是否可能?若可能,在什么情况下会产生?【*,联考】
4.设系统中仅有一类数量为M的独占型资源,系统中N个进程竞争该类资源,其中各进程对该类资源的最大需
求量为W,当M、N、W分别取下列值时,试判断哪些情况会发生死锁,为什么?【**,★,联考】
1)M=2,N=2,W=1
2)M=3,N=2,W=2
3)M=3,N=2,W=3
4)M=5,N=3,W=2
5)M=6,N=3,W=3
5.一台计算机有8台磁带机。
它们由N个进程竞争使用,每个进程可能需要3台磁带机。
请问N为多少时,系统
没有死锁危险,并说明原因。
【**,联考】
6.Dijkstra于1965年提出的银行家算法,其主要思想是什么?它能够用来解决实际中的死锁问题吗?为什么?【*
*,联考】
7.一个系统具有150个存储单元,在T0时刻按下表所示分配给3个进程。
【**,★,联考】
对下列请求应用银行家算法分析判断是否安全?
1)第4个进程P4到达,最大需求60个存储单元,当前请求分配25个单元。
2)第4个进程P4到达,最大需求50个存储单元,当前请求分配35个单元。
如果是安全的,请给出一个可能的进程安全执行序列;如果不是安全的,请说明原因。
8.若系统运行中出现如表所示的资源分配情况,该系统是否安全?如果进程P2此时提出资源申请(1,2,2,2),
系统能否将资源分配给它?为什么?【**,联考】
9.有相同类型的5个资源被4个进程所共享,且每个进程最多需要2个这样的资源就可以运行完毕。
试问该系统
是否会由于对这种资源的竞争而产生死锁。
【**,联考】
10.设系统中有3种类型的资源(A、B和C)和5个进程P1、P2、P3、P4、P5,A资源的数量为17,B资源的数
量为5,C资源的数量为20。
在T0时刻系统状态如表所示。
系统采用银行家算法实施死锁避免策略。
【***,联考】
1)T0时刻是否为安全状态?若是,请给出安全序列。
2)若在T0时刻进程P2请求资源(0,3,4),是否能实施资源分配?为什么?
3)在(2)的基础上,若进程P4请求资源(2,0,1),是否能实施资源分配?为什么?
4)在(3)的基础上,若进程P1请求资源(0,2,0),是否能实施资源分配?为什么?
11.某系统有R1、R2和R3共3种资源,在T0时刻P1、P2、P3和P4这4个进程对资源的占用和需求情况如下表
所示,此时系统的可用资源向量为(2,1,2)。
试问:【**,联考】
1)将系统中各种资源总数和此刻各进程对各资源的需求个数用向量或矩阵表示出来。
2)如果此时P1和P2均发出资源请求向理Request(1,0,1),为了保证系统的安全性,应该如何分配资源给
这两个进程?说明你所采用策略的原因。
12.假定某计算机系统有R1和R2两类可再使用资源(其中R1有两个单位,R2有一个单位),它们被进程P1和P2
所共享,且已知两个进程均以下列顺序使用两类资源:【**,联考】
→申请R1→申请R2→申请R1→释放R1→释放R2→释放R1→
试求出系统运行过程中可能到达的死锁点,并画出死锁点的资源分配图(或称进程-资源图)。
13.试化简下图的进程-资源图,并利用死锁定理给出相应的结论。
R2
R2 R1
(a)(b)。