《操作系统》习题集:第6章 死锁
操作系统死锁
操作系统死锁操作系统中死锁是必考的一个题目。
下面由店铺为大家整理了操作系统的死锁的相关知识,希望对大家有帮助!一、操作系统死锁的概念所谓死锁<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.按序分配资源是为了( )。
操作系统课件 第6章 死锁
死锁检测算法
⑤ 随机选取一条没有标记的从该节点出发 的弧(有向边),标记它。然后顺着这根 弧找到新的当前节点,返回到第3步。 ⑥ 移走该节点,返回到前一个节点。返回 第4步。
6.3.1 每种类型一个资源的死锁检测
问题的提出
是否资源分配图中存在环就一定有 死锁?
有环有死锁
有环无死锁
死锁定理
进程推进顺序不合理
进程在运行过程中具有异步性特征,如果它们 之间的请求和释放资源的顺序不当,也同样会导 致进程产生死锁。
(1) 竞争资源产生的死锁:
进程
P1
资源
R1
R2
资源
P2
进程
(2) 进程推进顺序不合理产生的死锁:
例:生产者—消费者问题中,若PV操作使用不 当,把生产者进程两个P操作次序互换,先执行 P(mutex),后执行P(empty),则可能会引起死锁。
经分析,在T0时刻,系统是安全的。因为存在 一个安全序列p2、p1、p3。见下图。
进程 最大需求 已分配 还需 可用
p1 p2
p3
10 4
9
5 2
2
5 2
7
3
由安全状态向不安全状态的转换
如果在T0 状态不按安全序列进行分配, 可能会导致系统进入一个不安全状态。
例如在T0状态下P3中申请1台磁带机。 如系统实施此次分配使系统状态由T0变为 T1状态,分析T1状态安全情况。
6.4.1 安全状态和不安全状态
• 安全状态:如果存在一个由系统中所有 进程构成的安全序列{P1,…Pn},则系 统处于安全状态。 • 不安全状态: 不存在一个安全序列,则 系统处于不安全状态。
6.4.1 安全状态和不安全状态
操作系统课后习题总结(清华大学出版社)
习题二参考答案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章 并发性_死锁及饥饿
第六章习题翻译第一部分复习题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 重新开始执行的时候, 它将会能够获得两个资源。
现代操作系统第六章死锁PPT
可剥夺和不可剥夺资源
资源分为两类:可剥夺的和不可剥夺的。 可剥夺资源(preemptable resource)可以从拥 有它的进程中剥夺而不会产生任何副作用。
存储器就是一类可剥夺的资源。
不可剥夺资源(nonpreemptable resource)是 无法在不导致计算失败的情况下从其拥有者中剥 夺的。
F
U
V
U
V
W
G (a)
G (b)
单资源类型的死锁检测
(a) 资源图 (b) 从(a)中抽取的环路
19
如果图中有环,说明系统中有死锁
单资源类型的死锁检测
该算法的执行步骤如下:
1.
2.
3.
4.
5.
6.
对于图中的每个节点N,以N作为起点执行下面5个 步骤。 初始化L为空表,并清除所有弧线的标记。 LL+{N},并检测N是否在L中已出现2次。如果 是,那么该图包含了一个环路(在L中),算法结束。 从N为始点的有向边,是否有未被标记的。如果有, 执行步骤5;如果没有,转到步骤6。 随机选取一条有向边,标记它。N此边的另一个 节点,转到步骤3。 NN的前一节点,即当前节点的前面一个节点, 如果该节点为起始节点,则表明该图不存在任何 环路,算法结束。否则转步骤3。
15
鸵鸟算法(Ostrich Algorithm)
视而不见 理由:
死锁极少发生 预防死锁的代价太高
UNIX和Windows采用这方法 这是方便性与正确性的平衡
16
死锁检测和恢复
当使用该技术时,系统并不试图阻止死 锁的发生,相反,它允许死锁发生,当 死锁发生时尝试去检测它,然后采取某 些行动来进行恢复。
《操作系统》习题集参考答案:第6章 死锁
第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):指进程每次申请它所需要的一部分资源,在等待分配新资源的同时,进程继续占有已分配到的资源。
●环路等待条件。
指存在一种进程资源的循环等待链,链中每一个进程已获得的资源同时被链中下一个进程所请求。
操作系统原理 第六章 死锁
1、资源分配图 系统由若干类资源构成,一类资源称为一个 资源类;每个资源类中包含若干个同种资源, 称为资源实例。 资源类:用方框表示(资源的不同类型) 资源实例:用方框中的黑圆点表示(存在于每个 资源中) 进程 :用圆圈中加进程名表示 分配边:资源实例进程 的一条有向边 申请边:进程资源类 的一条有向边
第六章 死锁
若对资源不加限制的分配可能导致进程 间由于竞争资源而相互制约以至无法继 续运行的局面,这就是死锁。
一、死锁的基本概念 1、死锁产生的原因 系统中两个或两个以上的进程无限期的 等待永远不可能发生的事件,则称这些 进程处于死锁状态中。
进程执行的速度 例6-1 对临时资源使用不加限制 例6-2 例6-3 生活中的例子: 独木桥 其他:wait signal操作顺序不对
二、死锁预防 1、破坏互斥条件 允许多个进程同时访问资源 2、破坏不剥夺条件 在允许进程动态申请资源的前提下:一 个进程在申请新资源的要求不能立刻得 到满足时,便处于等待状态。而一个处 于等待状态的进程的全部资源可以被剥 夺。
3、破坏“请求和保持”条件 静态资源分配法 资源预分配:进程开始之前,一次性分配他 所需要的全部资源。 主要问题: • 进程因等待所需要的资源阻塞时间过长 • 部分资源可能在相当长的时间内变得不 可用; • 进程一次性知道所需全部资源不太可能。
三、死锁避免 系统对进程发出的每一个系统能够满足 的资源申请进行动态检查,并根据检查 结果决定是否分配资源,如果分配后系 统可能发生死锁,则不予分配,否则予 以分配,这是一种保证系统不进入死锁 状态的动态策略。
1、安全和不安全状态 安全状态:在某一时刻,系统能按照某 种次序,如<P1,P2……Pn>来为并发进 程分配所需要的资源,直到最大需求, 使每个进程都顺利完成,则程此时的系 统状态为安全状态。此序列为安全序列。 不安全状态:某一时刻,不存在这样的 一个安全序列,则称为不安全状态。
操作系统---死锁
操作系统---死锁操作系统死锁在计算机操作系统的世界里,有一个颇为棘手的问题,那就是死锁。
死锁就像是交通堵塞中的死结,一旦形成,整个系统的运行就会陷入僵局,无法正常推进任务。
那到底什么是死锁呢?简单来说,死锁是指多个进程或线程在执行过程中,因为争夺资源而造成的一种互相等待的僵持局面。
想象一下,有两个小朋友,小明和小红,他们都在玩积木。
小明手里拿着红色的积木,想要蓝色的积木,而蓝色的积木在小红手里。
小红呢,拿着蓝色的积木,想要红色的积木,他们谁也不愿意先把自己手里的积木给对方,于是就僵持在那里,这就是一个简单的死锁例子。
在操作系统中,资源可以分为两类,一类是可剥夺资源,比如 CPU 资源,系统可以强行剥夺正在使用 CPU 的进程,将其分配给其他更紧急的进程;另一类是不可剥夺资源,像打印机、磁带机等,一旦进程获得了这类资源,就只能由该进程主动释放。
死锁通常就发生在多个进程对不可剥夺资源的竞争中。
死锁的发生需要满足四个必要条件。
第一个条件是互斥使用,也就是说资源在同一时刻只能被一个进程或线程使用。
比如前面提到的打印机,如果两个进程能同时使用同一台打印机打印,那就乱套了,所以打印机这种资源必须是互斥使用的。
第二个条件是请求和保持,进程在持有部分资源的同时,还请求获取其他被占用的资源。
还是拿小明和小红举例,小明拿着红色积木还想要蓝色积木,小红拿着蓝色积木还想要红色积木,这就是请求和保持。
第三个条件是不可剥夺,进程已经获得的资源在未使用完之前不能被剥夺,这是导致死锁的关键因素之一。
最后一个条件是循环等待,存在一组进程,每个进程都在等待下一个进程所持有的资源,形成一个环形的等待链。
那么,死锁会给操作系统带来什么样的危害呢?首先,死锁会导致系统的资源利用率大幅降低。
因为陷入死锁的进程占用着资源却不进行有效的工作,其他需要这些资源的进程无法获得资源,从而使得整个系统的工作效率低下。
其次,死锁会增加系统的开销。
为了检测和解除死锁,操作系统需要花费大量的时间和计算资源,这无疑增加了系统的负担。
操作系统课后习题答案
操作系统课后习题答案问题一:简述进程和线程的区别。
进程是操作系统进行资源分配和调度的一个独立单位,它是程序在数据集上的一次动态执行过程。
线程是进程中的一个实体,是CPU调度和分派的基本单位,比进程更小的能独立运行的基本单位。
线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如执行栈),但它可以与同属一个进程的其他线程共享进程所拥有的全部资源。
问题二:什么是死锁?如何避免死锁?死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种僵局,若无外力作用,这些进程都将无法向前推进。
避免死锁的方法包括:1. 互斥条件:确保系统资源足够,以避免多个进程争夺同一资源。
2. 请求和保持条件:设计资源分配策略,确保进程不会在请求新资源的同时保持已分配的资源。
3. 不剥夺条件:一旦资源被分配给某进程,除非该进程自愿释放资源,否则系统不应强制剥夺。
4. 循环等待条件:通过资源分配图检测循环等待并进行处理。
问题三:描述操作系统中的分页和分段机制。
分页机制是操作系统用来实现虚拟内存的一种技术,它将物理内存分割成固定大小的页,并将这些页与进程的虚拟地址空间中的页表项关联起来。
当进程访问一个不在物理内存中的虚拟地址时,操作系统会触发一个缺页中断,将所需的页从辅助存储器加载到物理内存中。
分段机制则是将程序的地址空间划分为多个段,每个段可以是不同的大小,并且可以独立地被加载和链接。
段表项包含了段的基地址和段的长度信息。
当程序访问一个段内的地址时,操作系统将虚拟地址转换为物理地址。
问题四:什么是文件系统?它有什么作用?文件系统是操作系统用于有效地存储、组织、管理和访问磁盘上的数据的一种系统。
它的作用包括:1. 数据持久性:确保即使在系统崩溃或电源故障后,数据也不会丢失。
2. 数据共享:允许多个用户或进程访问和共享数据。
3. 抽象:为用户和应用程序提供统一的接口来访问存储在磁盘上的数据。
4. 安全性:通过权限控制保护数据不被未授权访问。
操作系统 死锁
实现银行家算法要有若干数据结构, 用它们来表 示资源分配系统的状态。 令n表示系统中进程的数目, m表示资源分类数。 还需要下列数据结构: (1) Available是一个长度为m的向量, 它表示每 类资源可用的数量。
(2) Max是一个n×m矩阵, 它表示每个进程对资
源的最大需求。
(3) Allocation是一个n×m矩阵, 它表示当前分 给每个进程的资源数目。 (4) Need是一个n×m矩阵, 它表示每个进程还缺 少多少资源。
2.1 产生死锁的必要条件 1. 互斥条件 即某个资源在一段时间内只能由一个进程占有, 而不能同时被两个或两个以上的进程占有。 这种独占 资源如平板式绘图仪、 CD-ROM驱动器、 打印机等等,
必须在占有该资源的进程主动释放它之后, 其他进程
才能占有该资源, 这是由资源本身的属性所决定的。 如独木桥就是一种独占资源, 两方的人不能同时过桥。
它, 该进程就一定处于等待状态。
4. 破坏循环等待的条件 为了使循环等待的条件从不出现, 一种方法是实 行资源有序分配策略, 即把全部资源事先按类编号, 然后依序分配, 使得进程在申请、 占用资源时不会构 成环路, 从而不会产生死锁。
更正规一点说, 令R={r1, r2, …, rm}, 表示一组资 源类型。 我们定义一个一对一的函数F(R)=N, 式中N是 一组自然数。 例如, 一组资源包括磁盘机、 磁带机、 读卡机和打印机。 函数F可定义如下: F(读卡机)=1
进程B在执行, 进程A等待。
进程B 进 度 1 释放R 占有R A和B 要求R 释放S 申请R 占有S 3 4 A和B 要求S 5 6 2
申请S
申请R
申请S
释放R 占有S
释放S
《现代操作系统》精读与思考笔记第六章死锁
《现代操作系统》精读与思考笔记第六章死锁 本系列博⽂是《现代操作系统(英⽂第三版)》(Modern Operating Systems,简称MOS)的阅读笔记,定位是正⽂精要部分的摘录理解和课后习题精解,因此不会事⽆巨细的全⾯摘抄,仅仅根据个⼈情况进⾏记录和推荐。
由于是英⽂版,部分内容会使⽤英⽂原⽂。
课后习题的选择标准:尽量避免单纯的概念考察(如:What is spooling?)或者简单的数值计算,⽽是能够引起思考加深理解的题⽬。
为了保证解答的正确性,每道题都会附上原书解答,⽽中⽂部分会适当加⼊⾃⼰的见解。
原书答案(需注册) 最初在翻这本书的⽬录时还在想,“死锁”这个主题安排在“进程”主题下就可以了嘛,为何要单列出⼀章?与动辄近百页的其他章节⽐,这⼀章只有区区三⼗来页⽽已,看似微不⾜道。
本章开篇便告诉读者,“死锁”不仅在进程并⾏时会出现,在数据库系统甚⾄是办公室的设备共⽤时也会出现,使⽤场景很⼴泛,也难怪成为⼀个独⽴章节。
也正因适⽤范围⼴泛,⽽⽅法是抽象的,这章特别强调,在决定使⽤某种避免或消除死锁的策略前,必须结合具体场景判断是否适⽤。
1.鸵鸟算法(P441) 所谓的鸵鸟算法,就是对问题视若不见。
虽然数学家认为根本不可接受,但考虑到⼀个不常发⽣并且发⽣后的解决开销很⼤的事件(如本章的死锁),反⽽是⼀个很好的复杂度与性能的折衷。
相⽐之下,尽管该书后⽂提到的避免和解决死锁的⽅法⽐较有效,⽐如⼴为⼈知的银⾏家算法(P451~454),但实⽤性实在有限。
2.spooling的打印机仍然可能造成死锁(P454~455) 虽然使⽤打印机对应的deamon进程唯⼀地与打印机交互、其他进程的打印任务仅仅是将需要打印的⽂件放⼊deamon进程指定的⼀个⽬录下,打印机这⼀设备不再会导致死锁;然⽽,这些待打印的⽂件是需要占⽤空间的,如果磁盘空间不⾜以容纳所有待打印的⽂件,仍然会造成死锁。
习题2再次提到了这个情形。
《操作系统》第6章 死锁
(3) 当进程申请资源,而资源当前又无剩余时,进 程必须等待。在一些操作系统中,进程申请失 败后便自动阻塞。当资源可用时,再把进程唤 醒。另一些OS则是在进程申请失败后,给出
一个错误码,因此是由进程本身决定等待时间,
然后重新申请。
例:三个进程A、B、C,三类资源R、S、T A进程,请求R,请求S,释放R,释放S; B进程,请求S,请求T,释放S,释放T; C进程,请求T,请求R,释放T,释放R;
P 空 2 Q 空 4 S 1 buffer 3 R 满 满
三、死锁的定义及性质 从以上的例 2 中,不难看出,所谓死锁是指进程 处于等待状态,且等待事件永远不会发生。 造成死锁的原因:(a) P、V操作死锁 例2 (b) 推进顺序不当 例1 (c) 因资源不足而争夺资源 死锁 例1、2 (d) 协同进程本身设计中的 错误(无论按什么次序运 行总免不了死锁) 例3
进程S:Receive (Q.4); 接收Q从4号buffer送来的信息 Receive (R.3); 接收R从3号buffer送来的信息 answer (R); 回答R 进程Q:Receive (P.2); 接收P从2号buffer送来的信息 Send (S.4); 通过4号buffer向S发信息 这四个进程启动后将进入死 锁状态:P要收到R的回答 后才向Q发送信息;R回答P 之前要等待S的回答;S要收 到Q送来信息后才回答R; 而Q需收到P送来的信息后 才向S发送信息,所以都无 法再运行。
占有 输入设备 等待
A
等待 输出设备
B
占有
乙进程 的进展 Y
占用 输入机
共同进展路径1
禁区
占用打印机
危险区
占用输入机
占用打印机
X 甲进程 的进展
计算机操作系统教程--核心与设计原理习题6答案
习题6答案习题66.1何谓死锁?死锁产生的原因和必要条件是什么?答:a.死锁是指多个进程因竟争资源而造成的一种僵局,若无外力作用,这些进程都将永远不能再向前推进;b.产生死锁的原因有二: 一是竟争资源,二是进程推进顺序非法;c.必要条件是:互斥条件,请求和保持条件,非剥夺条件和循环等待条件。
6.2列出日常生活中的几个死锁的例子。
答:略。
6.3在一个死锁中,只包含一个进程是否可能?答:不可能。
6.4死锁和饥饿的主要区别是什么?答:饥饿与死锁有一定联系:二者都是由于竞争资源而引起的,但又有明显差别,主要表现在如下几个方面:(1)从进程状态考虑,死锁进程都处于等待状态,忙式等待(处于运行或就绪状态)的进程并非处于等待状态,但却可能被饿死;(2)死锁进程等待永远不会被释放的资源,饿死进程等待会被释放但却不会分配给自己的资源,表现为等待时限没有上界(排队等待或忙式等待);(3)死锁一定发生了循环等待,而饿死则不然。
这也表明通过资源分配图可以检测死锁存在与否,但却不能检测是否有进程饿死;(4)死锁一定涉及多个进程,而饥饿或被饿死的进程可能只有一个。
饥饿和饿死与资源分配策略有关,因而防止饥饿与饿死可从公平性考虑,确保所有进程不被忽视,如FCFS分配算法。
6.5一台计算机共8台磁带机,由N个进程共享,每个进程最多要3台,问N为多少时不会有死锁,为什么?答:N<=3,可通过画出资源分配图来解。
6.6有R1(2个)、R2(1个)两类资源和两个进程P1、P2,两个进程均以:申请R1Æ申请R2Æ申请R1Æ释放R1Æ释放R2Æ释放R1的顺序使用资源,求可能达到的死锁点,并画出此时的资源分配图。
答:当两个进程都执行完第1步后,无论哪个进程执行完第2步,以后,这两个进程再申请资源时就会死锁。
6.7解决死锁的方法有哪几种?哪种方法最容易实现?哪种方法使资源的利用率最高?答:解决死锁可归纳为4种方法:预防死锁,避免死锁,检测死锁和解除死锁。
操作系统课件第06章 死锁
Chapter 6: Deadlocks死锁⏹What is Deadlock死锁的定义⏹System Model关于资源的系统模型⏹Deadlock Characterization 死锁的特征⏹Methods for Handling Deadlocks 死锁的处理方法☞Deadlock Prevention 死锁的预防☞Deadlock Avoidance 死锁的避免☞Deadlock Detection 死锁的检测☞Recovery from Deadlock 死锁的恢复⏹Combined Approach合成方法to DeadlockHandlingWhat is Deadlock死锁的定义Traffic Deadlock交通死锁The Deadlock Problem死锁问题的定义⏹A set of blocked processes被阻塞的进程eachholding a resource资源and waiting to acquire a resource held by another process in the set.一个集合中的所有进程各持有部分资源,且在等待集合中另一个进程所持有的资源⏹Example☞System has 2 tape drives.☞P1and P2each hold one tape drive and each needs another one.⏹Example☞semaphores A and B, initialized to 1P 0P 1wait (A);wait(B) wait (B);wait(A)Bridge Crossing过桥Example⏹Traffic only in one direction.⏹Each section of a bridge can be viewed as a resource.⏹If a deadlock occurs, it can be resolved if one car backsup (preempt resources and rollback回退).⏹Several cars may have to be backed up if a deadlockoccurs.如果死锁,有些汽车必须倒车⏹Starvation饿死is possible.Deadlock Characterization死锁的特征Deadlock Characterization死锁的特征Deadlock can arise发生if four conditions hold simultaneously同时.⏹Mutual exclusion互斥:only one process at a time canuse a resource独占资源.⏹Hold and wait保持且等待: a process holding at least oneresource is waiting to acquire additional resources held byother processes.⏹No preemption不可剥夺: a resource can be releasedonly voluntarily by the process holding it, after that processhas completed its task.⏹Circular wait循环等待:there exists a set {P0, P1, …, P0}of waiting processes such that P0 is waiting for a resourcethat is held by P1, P1is waiting for a resource that is heldbyP2, …, P n–1is waiting for a resource that is held byP n, and P0is waiting for a resource that is held by P0.四者缺一不可System Model关于资源的系统模型System Model关于资源的系统模型⏹Resource types R1, R2, . . ., R mCPU cycles, memory space, I/O devices⏹Each resource type R i has W i instances实例.☞同类资源中的各实例在满足需求方面均相同⏹Each process utilizes a resource as follows:☞request 申请☞use 使用☞release 释放⏹If in deadlock, none of the processes in the set can …死锁中的进程,不能:☞run运行☞release resources释放资源☞be awakened被唤醒Resource-Allocation Graph资源分配图A set of vertices节点V and a set of edges边线E.⏹V is partitioned into two types:☞P= {P1, P2, …, P n}, the set consisting of all the processes进程in the system.☞R= {R1, R2, …, R m}, the set consisting of all resource资源types in the system.⏹request edge申请边线–directed edge P1 →R j⏹assignment edge分配边线–directed edge R j→P iResource-Allocation Graph (Cont.)⏹Process⏹Resource Type with 4 instances⏹P i requests an instance of R j ⏹P i is holding an instance of R j P iP iR jR jExample of a Resource Allocation GraphResource Allocation Graph With A DeadlockResource Allocation Graph With A Cycle But No DeadlockBasic Facts⏹If graph contains no cycles ⇒no deadlock.资源分配图中没有循环⇒没有死锁⏹If graph contains a cycle ⇒资源分配图中有循环:☞if only one instance per resource type, then deadlock.如果每种资源仅有一个实例,则形成死锁☞if several instances per resource type, possibility of deadlock.如果有些资源有多个实例,则不一定死锁Methods for Handling Deadlocks死锁的处理方法Methods for Handling Deadlocks死锁的处理方法⏹Ensure that the system will never enter a deadlock state.确保系统从不发生死锁☞Deadlock Prevention死锁的预防☞Deadlock Avoidance死锁的避免⏹Allow the system to enter a deadlock state and thenrecover.允许系统发生死锁,而后恢复☞Deadlock Detection死锁的检测⏹Ignore the problem and pretend假装that deadlocks neveroccur in the system; used by most operating systems,including UNIX.假设系统从不发生死锁,忽略此类问题The Ostrich鸵鸟Algorithm⏹Pretend there is no problem假装没有问题⏹Reasonable if 在以下情况下可行☞deadlocks occur very rarely 死锁极少发生☞cost of prevention is high防止成本很高⏹UNIX and Windows takes this approach⏹It is a trade off折衷between☞convenience 方便性☞correctness 正确性Deadlock Prevention死锁的预防Restrain the ways request can be made.限制申请方式⏹Mutual Exclusion–not required for sharable resources;must hold for nonsharable resources.互斥——只对独占资源需要预防(独占→共享)⏹Hold and Wait–must guarantee that whenever aprocess requests a resource, it does not hold any otherresources.在申请资源时,不允许占有其他资源☞Require process to request and be allocated all itsresources所有资源before it begins execution, or allowprocess to request resources only when the process hasnone.☞Low resource utilization低资源利用率; starvation饿死possible.Deadlock Prevention (Cont.)⏹No Preemption不可剥夺–☞If a process that is holding some resources requests another resource that cannot be immediately allocated to it,then all resources currently being held are released.在申请新资源不能满足时,已持有资源全部释放☞Preempted resources are added to the list of resources for which the process is waiting.被剥夺的资源分配给等待进程☞Process will be restarted only when it can regain its old resources, as well as the new ones that it is requesting.进程只有当新旧资源都能同时满足时,才重新开始运行⏹Circular Wait–impose强加a total ordering排序of allresource types, and require that each process requests resources in an increasing order of enumeration.强制按特定顺序申请资源Summary of approaches to deadlock prevention死锁的预防方法总结Deadlock Avoidance死锁的避免Requires that the system has some additional a priori推理的information available.⏹Simplest and most useful model requires that eachprocess declare the maximum number of resources ofeach type that it may need.要求各进程声明每种资源的最大需求数量⏹The deadlock-avoidance algorithm dynamically examinesthe resource-allocation state to ensure that there cannever be a circular-wait condition.死锁避免算法动态检测资源分配状态,确保不循环等待⏹Resource-allocation state is defined by the number ofavailable and allocated resources, and the maximumdemands of the processes.资源分配状态由已分配资源数、可利用资源数和各进程的最大资源需求数确定Safe State安全状态⏹When a process requests an available resource, systemmust decide if immediate allocation leaves the system ina safe state.当进程申请资源时,系统须决定立即分配是否安全⏹System is in safe state if there exists a safe sequence ofall processes.如果存在一个所有进程的安全顺序,则系统处于安全状态⏹Sequence <P1, P2, …, P n> is safe if for each P i, theresources that P i can still request can be satisfied bycurrently available resources + resources held by all the P j, with j<I.☞If P i resource needs are not immediately available, then P ihave finished.can wait until all Pj☞When P j is finished, P i can obtain needed resources, execute, return allocated resources, and terminate.☞When P i terminates, P i+1can obtain its needed resources, and so on.Basic Facts⏹If a system is in safe state ⇒no deadlocks.如果系统处于安全状态⇒没有死锁⏹If a system is in unsafe state ⇒possibility ofdeadlock.如果系统处于不安全状态⇒不一定死锁因为各进程的运行存在不确定性,如个别进程的退出等⏹Avoidance ⇒ensure that a system will neverenter an unsafe state.死锁的避免⇒确保系统从不进入不安全状态Safe, Unsafe , Deadlock StateAlgorithms for Deadlock Avoidance避免死锁的算法⏹Resource-Allocation Graph Algorithm资源分配图算法⏹Banker’s Algorithm银行家算法Resource-Allocation Graph Algorithm资源分配图算法⏹Claim需要edge P i R j indicated that process P j mayrequest resource R j; represented by a dashed line.需要边表示进程可能会申请资源,用虚线表示⏹Claim需要edge converts to request edge when a processrequests a resource.当进程申请一个资源时,需要边转化为申请边⏹When a resource is released by a process, assignmentedge reconverts to a claim edge.当进程释放一个资源时,分配边转化为需要边⏹Resources must be claimed a priori推理的in the system.对资源的需求数需事先声明Resource-Allocation Graph For Deadlock AvoidanceUnsafe State In Resource-Allocation GraphBanker’s Algorithm银行家算法⏹Multiple instances.资源分配图不适用于多实例系统⏹Each process must a priori claim maximum use.每一进程必须能推算出最大资源的需求量⏹When a process requests a resource it mayhave to wait.当一个进程申请资源时,它可能需要等待⏹When a process gets all its resources it mustreturn them in a finite amount of time.当一个进程得到其所有申请资源后,须在有限时间内归还The Banker's Algorithmfor a Single Resource(a) (b) (c)⏹Three resource allocation states☞safe☞safe☞unsafeBanker's Algorithmfor Multiple Resources Example of banker's algorithm with multiple resources E:总的资源P:已分配资源A:剩余资源Data Structures for the Banker’s AlgorithmLet n= number of processes, and m = number of resources types.⏹Available:Vector of length m. If available [j] = k, there arek instances of resource type R j available.⏹Max: n x m matrix. If Max [i,j] = k, then process P i mayrequest at most k instances of resource type R j.⏹Allocation: n x m matrix. If Allocation[i,j] = k then P i iscurrently allocated k instances of R j.⏹Need: n x m matrix. If Need[i,j] =k, then P i may need kmore instances of R j to complete its task.Need[i,j]= Max[i,j] –Allocation[i,j].Safety Algorithm1.Let Work and Finish be vectors向量of length m and n,respectively. Initialize:Work = AvailableFinish [i] =false for i= 1,2, …, n.2.Find an i such that both:(a) Finish[i] = falseWork(b) NeediIf no such i exists, go to step 4.3.Work= Work + Allocation iFinish[i] =truego to step 2.4.If Finish[i] == true for all i, then the system is in a safestate, else unsafe.Resource-Request Algorithm for Process P i Request i = request vector for process P i . If Request i [j ] = k then process P i wants k instances of resource type R j .1.If Request i ≤Need i go to step2. Otherwise, raise error condition, since process has exceeded its maximum claim.2.If Request i ≤Available , go to step3. Otherwise P i must wait, since resources are not available.3.Pretend to allocate requested resources to P i by modifying the state as follows:Available = Available -Request i ;Allocation i = Allocation i + Request i ;Need i =Need i –Request i;;•If safe ⇒the resources are allocated to P i .•If unsafe ⇒P i must wait, and the old resource-allocation state is restoredExample of Banker’s Algorithm⏹ 5 processes P0 through P4; 3 resource types A(10 instances),B(5instances, and C(7 instances).⏹Snapshot at time T0:Allocation Max AvailableA B C A B C A B CP00 1 07 5 3 3 3 2P1 2 0 0 3 2 2P2 3 0 2 9 0 2P3 2 1 1 2 2 2P40 0 2 4 3 3Example (Cont.)⏹The content of the matrix. Need is defined to be Max –Allocation.NeedA B CP07 4 3P1 1 2 2P2 6 0 0P30 1 1P4 4 3 1⏹The system is in a safe state since the sequence < P1, P3, P4,P2, P0> satisfies safety criteria.Example P1Request (1,0,2) (Cont.)⏹Check that Request ≤Available (that is, (1,0,2) ≤(3,3,2) ⇒true.Allocation Need AvailableA B C A B C A B CP00 1 0 7 4 3 2 3 0P1 3 0 20 2 0P2 3 0 1 6 0 0P3 2 1 1 0 1 1P40 0 2 4 3 1⏹Executing safety algorithm shows that sequence <P1, P3, P4,P0, P2> satisfies safety requirement.⏹Can request for (3,3,0) by P4be granted?⏹Can request for (0,2,0) by P0 be granted?Deadlock Detection死锁的检测⏹Allow system to enter deadlock state允许系统进入死锁状态⏹Detection algorithm检测算法⏹Recovery scheme恢复方案Single Instance of Each Resource Type单实例资源类型⏹Maintain wait-for graph☞Nodes are processes.☞P i P j if P i is waiting for P j.i进程在等待j进程释放某资源⏹Periodically定期地invoke激活an algorithm thatsearches for a cycle in the graph.⏹An algorithm to detect a cycle in a graphrequires an order of n2operations, where n isthe number of vertices in the graph.算法复杂度n2Resource-Allocation Graph and Wait-for Graph Resource-Allocation Graph Corresponding wait-for graphSeveral Instances of a Resource Type多实例资源类型⏹Available: A vector of length m indicates the number ofavailable resources of each type.向量m表示每种类型资源可利用的实例数⏹Allocation:An n x m matrix defines the number ofresources of each type currently allocated to eachprocess.矩阵n x m表示各种资源分配给每个进程的实例数⏹Request:An n x m matrix indicates the current requestof each process. If Request [i j] = k, then process P i isrequesting k more instances of resource type. R j.矩阵n x m表示各进程当前请求的资源实例数Detection Algorithm检测算法1.Let Work and Finish be vectors of length m and n,respectively Initialize:(a) Work= Available(b)For i= 1,2, …,n, if Allocationi ≠0, thenFinish[i] = false;otherwise, Finish[i] = true.2.Find an index i such that both:(a)Finish[i] == false(b)Request i≤WorkIf no such i exists, go to step 4.Detection Algorithm (Cont.)3.Work= Work+ AllocationiFinish[i] = truego to step 2.4.If Finish[i] == false, for some i, 1 ≤i≤n, then the system is indeadlock state. Moreover, if Finish[i] == false, then Pi isdeadlocked.Algorithm requires an order of O(m x n2)operations to detect whether the system is in deadlocked state.Example of Detection Algorithm⏹Five processes P0through P4;three resource typesA (7 instances),B (2 instances), and C(6 instances).⏹Snapshot at time T0:Allocation Request AvailableA B C A B C A B CP00 1 0 0 0 0 0 0 0P1 2 0 0 2 0 2P2 3 0 30 0 0P3 2 1 1 1 0 0P40 0 2 0 0 2⏹Sequence <P0, P2, P3, P1, P4> will result in Finish[i] = truefor all i.Example (Cont.)⏹P2requests an additional instance of type C.RequestA B CP00 0 0P1 2 0 1P20 0 1P3 1 0 0P40 0 2⏹State of system?☞Can reclaim resources held by process P0, but insufficient resources to fulfill other processes‘ requests.☞Deadlock exists, consisting of processes P1, P2, P3, and P4.Detection-Algorithm Usage检测算法的使用⏹When, and how often, to invoke depends on:何时,如何激活依赖于:☞How often a deadlock is likely to occur?死锁发生的频率☞How many processes will need to be rolled back?需要回退的进程数量one for each disjoint cycle每个循环一个⏹If detection algorithm is invoked arbitrarily任意地, theremay be many cycles in the resource graph and so we would not be able to tell which of the many deadlocked processes “caused” the deadlock如果检测算法可随意激活,可能会在资源分配图中找到很多循环,从而很难发现是哪个进程“引起”了死锁。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第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)。