当前位置:文档之家› 死锁产生的原因和解决办法

死锁产生的原因和解决办法

死锁产生的原因和解决办法
死锁产生的原因和解决办法

关于死锁产生的原因以及解决的办法

死锁问题无法避免(当然包括数据争夺),只能尽可能地减小死锁的发生,死锁和数据争夺只能尽量避免

一般来说,如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。

另外死锁有4个必要条件(要发生缺一不可)

(1)互斥条件:一个资源每次只能被一个进程使用。

(2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。

(3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。

(4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。

通过使用较好的资源分配算法,就可以尽可能地破坏死锁的必要条件,从而尽可能地避免死锁。

下列方法有助于最大限度地降低死锁:

1 、按同一顺序访问对象。

如果所有并发事务按同一顺序访问对象,则发生死锁的可能性会降低。例如,如果两个并发事务获得Supplier 表上的锁,然后获

得Part 表上的锁,则在其中一个事务完成之前,另一个事务被阻塞在Supplier 表上。第一个事务提交或回滚后,第二个事务继续进

行。不发生死锁。将存储过程用于所有的数据修改可以标准化访问对象的顺序

2、避免事务中的用户交互。

避免编写包含用户交互的事务,因为运行没有用户交互的批处理的速度要远远快于用户手动响应查询的速度,例如答复应用程序请求参数的提示。例如,如果事务正在等待用户输入,而用户去吃午餐了或者甚至回家过周末了,则用户将此事务挂起使之不能完成。这样将降低系统的吞吐量,因为事务持有的任何锁只有在事务提交或回滚时才会释放。即使不出现死锁的情况,访问同一资源的其它事务也会被阻塞,等待该事务完成。

3、保持事务简短并在一个批处理中。

在同一数据库中并发执行多个需要长时间运行的事务时通常发生死锁。事务运行时间越长,其持有排它锁或更新锁的时间也就越长,从而堵塞了其它活动并可能导致死锁。保持事务在一个批处理中,可以最小化事务的网络通信往返量,减少完成事务可能的延迟并释放锁

4、使用低隔离级别。

确定事务是否能在更低的隔离级别上运行。执行提交读允许事务读取另一个事务已读取(未修改)的数据,而不必等待第一个事务完成。使用较低的隔离级别(例如提交读)而不使用较高的隔离级别(例如可串行

读)可以缩短持有共享锁的时间,从而降低了锁定争夺

5、使用绑定连接。

使用绑定连接使同一应用程序所打开的两个或多个连接可以相互合作。次级连接所获得的任何锁可以象由主连接获得的锁那样持有,反之亦然,因此不会相互阻塞。

第3章死锁习题及答案

第三章死锁习题 一、填空题 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。其初值为②,表示该资源尚未使用,临界区应置于③和④原语之间。

操作系统死锁习题集

死锁习题 一、填空题 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死锁

数据库死锁问题总结

数据库死锁问题总结 1、死锁(Deadlock) 所谓死锁:是指两个或两个以上的进程在执行过程中,因争夺资源而造 成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。此时称系 统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。由于资源占用是互斥的,当某个进程提出申请资源后,使得有关进程在无外力 协助下,永远分配不到必需的资源而无法继续运行,这就产生了一种特殊现象 死锁。一种情形,此时执行程序中两个或多个线程发生永久堵塞(等待),每 个线程都在等待被其他线程占用并堵塞了的资源。例如,如果线程A锁住了记 录1并等待记录2,而线程B锁住了记录2并等待记录1,这样两个线程就发 生了死锁现象。计算机系统中,如果系统的资源分配策略不当,更常见的可能是 程序员写的程序有错误等,则会导致进程因竞争资源不当而产生死锁的现象。 锁有多种实现方式,比如意向锁,共享-排他锁,锁表,树形协议,时间戳协 议等等。锁还有多种粒度,比如可以在表上加锁,也可以在记录上加锁。(回滚 一个,让另一个进程顺利进行) 产生死锁的原因主要是: (1)系统资源不足。 (2)进程运行推进的顺序不合适。 (3)资源分配不当等。 如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能 性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序 与速度不同,也可能产生死锁。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 破解:静态分配(分配全部资源) (3)不剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 破解:可剥夺 (4)循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 破解:有序分配 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 死锁的预防和解除:

计算机操作系统(习题集)第三章_答案

第三章处理机调度与死锁 一、单项选择题 1、操作系统中的作业管理是一种(A )。 A.宏观的高级管理 B.宏观的低级管理 C.系统刚开始加电 D.初始化引导完成 2、作业调度又称为[1A],它决定将哪些在外存储器上的处于[2D]状态的作业调入主机内存。 系统经作业调度程序选中一个或多个作业后,就为它们分配必要的内存、设备及软资源。然后控制权就交给了[3B],由[3]将它们变为一个或一组[4C],并[5A]。 供选择的答案: [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、为它们分配设备 3、处于后备状态的作业存放在(A )中。

A.外存 B.内存 C.A和B D.扩展内存 4、在操作系统中,JCB是指(A )。 A.作业控制块 B.进程控制块 C.文件控制块 D.程序控制块 5、作业在系统中存在与否的唯一标志是(C)。 A.源程序 B.作业说明书 C.作业控制块 D.目的程序 6、按照作业到达的先后次序调度作业,排队等待时间最长的作业被优先调度,这是指(A)调度算法。 A.先来先服务法 B. 短作业优先法 C.时间片轮转法 D. 优先级法 7、在批处理系统中,周转时间是(B )。 A.作业运行时间 B.作业等待时间和运行时间之和 C.作业的相对等待时间 D.作业被调度进入内存到运行完毕的时间 8、为了对紧急进程或重要进程进行调度,调度算法应采用(B)。 A.先来先服务法 B. 优先级法 C.短作业优先法 D. 时间片轮转法 9、操作系统中,(A)负责对进程进行调度。 A.处理机管理 B. 作业管理 C.高级调度管理 D. 存储和设备管理

《操作系统》习题集参考答案:第6章 死锁

第6章死锁-习题集 一、选择题 1. C 2. C 3. C 4. C //产生死锁的原因是系统资源不足及进程推进顺序不正确 5. B 6. D 7. B 8. C 9. C 10. 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. B 15. B

16. B //本注:破坏了死锁必要条件“环循等待”,属于“死锁预防” 17. C 18. D //本注:P2和P3无法满足资源需要,都需资源R2三个。 二、综合应用题 1.所谓死锁是指多个进程因竞争系统资源或相互通信而处于永久阻塞状态,若无外力作 用,这些进程都将无法向前推进。 产生死锁的原因是:一是由多进程共享的资源不足而引起竞争资源;二是由于进程在运行过程中具有异步性,进程推进顺序非法。 2.必要条件如下: ●互斥条件。指在一段时间内某资源仅为一个进程所占有。 ●不剥夺条件。指进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走, 而只能由该进程自己释放。 ●部分已分配条件(Hold and Wait):指进程每次申请它所需要的一部分资源,在等待 分配新资源的同时,进程继续占有已分配到的资源。 ●环路等待条件。指存在一种进程资源的循环等待链,链中每一个进程已获得的资源 同时被链中下一个进程所请求。 解决死锁问题常采用的措施有: ●死锁预防。通过破坏死锁产生的四个必要条件中之一来预防死锁的发生。 ●死锁避免。在资源动态分配进程中,用某种方法防止系统进程不安全状态,从而避 免死锁。 ●死锁的检测及解除。通过系统的检测机构及时地检测出死锁的发生,然后采取某种 措施解除死锁。 3.有可能。例如在系统死锁的状态下,进程处于占有等待资源的状态,应当即不属于运行 态也不属于就绪态,即都处于阻塞状态时。 4.在资源分配系统中,死锁发生的原因是由于多个进程共享有限的独占型资源。当多个进 程占有了部分资源又需要更多的资源时,就可能形成循环等待链而导致死锁。 死锁情况分析:每个进程都占有W-1个资源,需再分配1个资源,为保证不死锁,系统必须至少有一个可分配的资源,取M满足: M>=N(W-1)+1 因此保证系统不发生死锁的最小M什可以从下面公式获得: M=N(W-1)+1 1)2*0+1=1,而M=3,不会死锁 2)2*1+1=3,而M=3,不会死锁 3)2*2+1=5,而M=3,可能死锁。出现死锁情况是:一个进程占有2个资源,另一占 1个资源 4)3*1+1=4,而M=5,不会死锁 5)3*2+1=7,而M=7,可能死锁。出现死锁情况是:3个进程各占2个资源

1产生死锁的根本原因是什么

第六章死锁 1.产生死锁的根本原因是什么?死锁发生的必要条件有哪些? 2.阐述预先静态分配法是如何进行死锁预防的。 3.阐述按序分配资源法是如何进行死锁预防的。 4.为什么说不能通过破坏“互斥条件”来预防死锁。 5.防止死锁的分配策略中,它们各自存在的缺点有哪些? 6.在一个真实的计算机机系统中,可用的资源和进程命令对资源的要求都不会持续很久(几个月),资源会损坏或被替换,新的进程会进入和离开系统,新的资源会被购买和添加到系统中。如果用银行家算法控制死锁,下面哪些变化是安全的(不会导致可能的死锁),并且是在什么情况下发生? a. 增加可用资源(新的资源被添加到系统) b. 减少可用资源(资源被从系统中永久性地移出) c. 增加一个进程的Max(进程需要更多的资源,超过所允许给予的资源) d. 减少一个进程的Max(进程不再需要那么多资源) e. 增加进程的数量 f. 减少进程的数量 7.考虑下面的一个系统在某一时刻的状态: Allocation Max Available A B C D A B C D A B C D P00 0 1 2 0 0 1 2 1 5 2 0 P1 1 0 0 0 1 7 5 0 P2 1 3 5 4 2 3 5 6 P30 6 3 2 0 6 5 2 P40 0 1 4 0 6 5 6 使用银行家算法回答下面问题: a. Need矩阵的内容是怎样的? b. 系统是否处于安全状态? c. 如果从进程P1发来一个请求(0,4,2,0),这个请求能否立刻被满足? 8.现有三个进程P1,P2,P3,共享A,B,C这三类资源,进程对资源的需求量和目前分配情况如下: 进程已占资源数最大需求数 A B C A B C P1 2 6 3 2 6 5 P2 2 0 1 4 5 3 P3 2 1 0 2 8 5 若系统还有剩余资源数分别为A类2个,B类6个,C类2个,请按银行家算法回答下列问题:

操作系统死锁练习及答案

死锁练习题 (一)单项选择题 l系统出现死锁的根本原因是( )。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.进程首次申请资源时对资源的最大需求量超过系统现存的资源量B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量c.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量D进程已占用的资源数与本次申请的资源数 之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量 7.实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用( )策略。A死锁的防止B.死锁的避免c.死锁的检测D.死锁的防止、避免和检测的混合(二)填空题 l若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。2.如果操作系统对 ______或没有顾及进程______可能出现的情况,则就可能形成死锁。3.系统出现死锁的四

死锁问题解决方法

Sqlcode -244 死锁问题解决 版本说明 事件日期作者说明 创建09年4月16日Alan 创建文档 一、分析产生死锁的原因 这个问题通常是因为锁表产生的。要么是多个用户同时访问数据库导致该问题,要么是因为某个进程死了以后资源未释放导致的。 如果是前一种情况,可以考虑将数据库表的锁级别改为行锁,来减少撞锁的机会;或在应用程序中,用set lock mode wait 3这样的语句,在撞锁后等待若干秒重试。 如果是后一种情况,可以在数据库端用onstat -g ses/onstat -g sql/onstat -k等命令找出锁表的进程,用onmode -z命令结束进程;如果不行,就需要重新启动数据库来释放资源。 二、方法一 onmode -u 将数据库服务器强行进入单用户模式,来释放被锁的表。注意:生产环境不适合。 三、方法二 1、onstat -k |grep HDR+X 说明:HDR+X为排他锁,HDR 头,X 互斥。返回信息里面的owner项是正持有锁的线程的共享内存地址。 2、onstat -u |grep c60a363c 说明:c60a363c为1中查到的owner内容。sessid是会话标识符编号。 3、onstat -g ses 20287 说明:20287为2中查到的sessid内容。Pid为与此会话的前端关联的进程标识符。 4、onstat -g sql 20287

说明:20287为2中查到的sessid内容。通过上面的命令可以查看执行的sql语句。 5、ps -ef |grep 409918 说明:409918为4中查到的pid内容。由此,我们可以得到锁表的进程。可以根据锁表进程的重要程度采取相应的处理方法。对于重要且该进程可以自动重联数据库的进程,可以用onmode -z sessid的方法杀掉锁表session。否则也可以直接杀掉锁表的进程 kill -9 pid。 四、避免锁表频繁发生的方法 4.1将页锁改为行锁 1、执行下面sql语句可以查询当前库中所有为页锁的表名: select tabname from systables where locklevel='P' and tabid > 99 2、执行下面语句将页锁改为行锁 alter table tabname lock mode(row) 4.2统计更新 UPDATE STATISTICS; 4.3修改数据库配置onconfig OPTCOMPIND参数帮助优化程序为应用选择合适的访问方法。 ?如果OPTCOMPIND等于0,优化程序给予现存索引优先权,即使在表扫描比较快时。 ?如果OPTCOMPIND设置为1,给定查询的隔离级设置为Repeatable Read时,优化程序才使用索引。 ?如果OPTCOMPIND等于2,优化程序选择基于开销选择查询方式。,即使表扫描可以临时锁定整个表。 *建议设置:OPTCOMPIND 0 # To hint the optimizer 五、起停informix数据库 停掉informix数据库 onmode -ky 启动informix数据库 oninit 注意千万别加-i参数,这样会初始化表空间,造成数据完全丢失且无法挽回。

《操作系统原理》5资源管理(死锁)习题

第五章死锁练习题 (一)单项选择题 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.进程首次申请资源时对资源的最大需求量超过系统现存的资源量 B.进程己占用的资源数与本次申请资源数之和超过对资源的最大需求量 C.进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足尚需的最大资源量 D进程已占用的资源数与本次申请的资源数之和不超过对资源的最大需求量,且现存资源能满足本次申请量,但不能满足尚需的最大资源量 7.实际的操作系统要兼顾资源的使用效率和安全可靠,对资源的分配策略,往往采用( )策略。 A死锁的防止B.死锁的避免C.死锁的检测D.死锁的防止、避免和检测的混合 (二)填空题 1.若系统中存在一种进程,它们中的每一个进程都占有了某种资源而又都在等待其中另一个进程所占用的资源。这种等待永远不能结束,则说明出现了______。 2.如果操作系统对______或没有顾及进程______可能出现的情况,则就可能形成死锁。 3.系统出现死锁的四个必要条件是:互斥使用资源,______,不可抢夺资源和______。 4.如果进程申请一个某类资源时,可以把该类资源中的任意一个空闲资源分配给进程,则说该类资源中的所有资源是______。 5.如果资源分配图中无环路,则系统中______发生。 6.为了防止死锁的发生,只要采用分配策略使四个必要条件中的______。 7.使占有并等待资源的条件不成立而防止死锁常用两种方法:______和______. 8静态分配资源也称______,要求每—个进程在______就申请它需要的全部资源。 9.释放已占资源的分配策略是仅当进程______时才允许它去申请资源。 10.抢夺式分配资源约定,如果一个进程已经占有了某些资源又要申请新资源,而新资源不能满足必须等待时、系统可以______该进程已占有的资源。 11.目前抢夺式的分配策略只适用于______和______。 12.对资源采用______的策略可以使循环等待资源的条件不成立。 13.如果操作系统能保证所有的进程在有限的时间内得到需要的全部资源,则称系统处于______。14.只要能保持系统处于安全状态就可______的发生。 15.______是一种古典的安全状态测试方法。 16.要实现______,只要当进程提出资源申请时,系统动态测试资源分配情况,仅当能确保系统安全时才把资源分配给进程。

操作系统中死锁与死机现象的比较

2010年第12期吉林省教育学院学报 N o .12,2010 第26卷J O U R N A LO FE D U C A T I O N A LI N S T I T U T EO FJ I L I NP R O V I N C E V o l .26(总240期) T o t a l N o .240 收稿日期:2010—07—25作者简介:哈森格日乐,女,内蒙古兴安盟广播电视大学,讲师。研究方向:计算机应用。 操作系统中死锁与死机现象的教学比较 哈森格日乐 (内蒙古兴安盟广播电视大学,内蒙古兴安盟137400) 摘要:死锁是计算机操作系统中的一个突出问题。死锁与死机是两个不同又有关联的概念。本文从死锁与死机的概念、 产生的原因及排除三个方面进行了比较论述。 关键词:死锁;死机;进程中图分类号:G 642.0 文献标识码:A 文章编号:1671—1580(2010)12—0071—02 操作系统中的死锁可定义为:各并发进程彼此互相等待对方所拥有的资源,且这些并发进程在得到对方的资源之前不会释放自己所拥有的资源。从而造成大家都想得到资源而又都得不到资源,各并发进程不能继续向前推进的状态。它是操作系统核心在内部管理和控制的调度设计中造成系统无法继续运行的“死机”现象。 一、产生死锁与“死机”的原因(一)死锁的起因及必要条件 死锁的起因是并发进程的资源竞争。产生死锁的根本原因在于系统提供的资源个数少于并发进程所要求的该类资源数。显然,由于资源的有限性,不可能为所有要求资源的进程无限制地提供资源。但是,可以采用适当的资源分配算法,以达到消除死锁的目的。然而要达到消除死锁的目的必须了解产生死锁的必要条件。这个我们从死锁的概念就可以得到。1.互斥条件。并发进程所要求和占有的资源是不能同时被两个以上进程使用或操作的,进程对它所需要的资源进行排他性控制;2.不剥夺条件。进程所获得的资源在未使用完毕之前,不能被其他进程强行剥夺,而只能由获得该资源的进程自己释放;3.部分分配。进程每次申请它所需要的一部分资源,在等待新资源的同时,继续占用已分配到的资源;4.环路条件。存在一种进程循环链,链中每一个进程已获得的资源同时被下一个进程所请求。 (二)“死机”的原因1.W i n d o w s 的即插即用功能,简化了新硬件的安装,但随之而来的是系统启动时,总是要搜索所有的驱动程序再决定运行。因此,某些失效硬件的驱动程序会导致“死机”。 2.资源耗尽:“蓝屏”故障常常发生在进行一项比较大或比较多的工作时,或是在保存复制的时候,往往发生得比较突然。这类故障的发生原因主要是与三个堆资源(系统资源、用户资源、G D I 资源)的占用情况有关。资源耗尽会出现“系统资源严重不足”等“蓝屏”警告。平时可以观察一下系统资源的可用比例。 3.版本冲突:尤其是不同文件管理方式。W i n 98与W i n 2000等的F A T 16/32、N T F S 就是如此。 4.注册表损坏:注册表是W i n d o w s 95之后引入的一个管理新概念,采用“表格”数据结构,其中包含了系统所有的信息。在启动和运行时,机器会读取其中的内容以配置系统,同时几乎所有重要操作都会在其中留下蛛丝马迹。通过修改,轻易实现常规操作无法实现的功能,但如果其中的信息受到破坏,那么系统就不能正常工作。 5.“碎片”太多:新安装的系统,数据的存放是连续的。不断运行工作后使文件在硬盘上的存放位置凌乱异常。即便不出现错误,系统性能也要降低。需要定期对硬盘进行碎片整理。 6.驻留主存:任务栏右下侧的系统托盘内的图标控制会使操作带来很大的方便,但这样的方便不仅降低系统性能,而且会耗尽主存和其他系统资源,最后造成系统死机。 7.卸载不完整:不完全卸载,会在系统中产生大量的垃圾文件,从而导致系统的不稳定。 71 DOI :10.16083/j .cn ki .1671-1580.2010.12.059

操作系统(死锁)试题

第五章死锁 一.选择题 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),系统能否将资源分配给它?为什么?

Oracle常见死锁发生的原因以及解决方法

Oracle常见死锁发生的原因以及解决方法 Oracle常见死锁发生的原因以及解决办法 一,删除和更新之间引起的死锁 造成死锁的原因就是多个线程或进程对同一个资源的争抢或相互依赖。这里列举一个对同一个资源的争抢造成死锁的实例。 Oracle 10g, PL/SQL version 9.2 CREATE TABLE testLock( ID NUMBER, test VARCHAR(100) ) COMMIT INSERT INTO testLock VALUES(1,'test1'); INSERT INTO testLock VALUES(2,'test2'); COMMIT; SELECT * FROM testLock 1. ID TEST 2.---------- ---------------------------------- 3. 1 test1 4. 2 test2 死锁现象的重现: 1)在sql 窗口执行:SELECT * FROM testLock FOR UPDATE; -- 加行级锁并对内容进行修改, 不要提交 2)另开一个command窗口,执行:delete from testLock WHERE ID=1; 此时发生死锁(注意此时要另开一个窗口,不然会提示:POST THE CHANGE RECORD TO THE DATABASE. 点yes 后强制commit):

3)死锁查看: 1.SQL> select https://www.doczj.com/doc/ef12206895.html,ername,l.object_id, l.session_id,s.serial#, s.lockwait,s.status,s.machine, s.program from v$session s,v$locked_object l where s.sid = l.session_id; USER NAME SESSION_ID SERIAL# LOCKWAIT STATUS MACHINE PROGRAM 2.---------- ---------- ---------- -------- -------- ---------------------- ------------ 3.SYS 146 104 INACTIVE WORKGROUP\J-THINK PLSQLDev.exe 4.SYS 144 145 20834474 ACTIVE WORKGROUP\J-THINK PLSQLDev. exe 字段说明: Username:死锁语句所用的数据库用户; SID: session identifier,session 标示符,session 是通信双方从开始通信到通信结束期间的一个上下文。 SERIAL#: sid 会重用,但是同一个sid被重用时,serial#会增加,不会重复。 Lockwait:可以通过这个字段查询出当前正在等待的锁的相关信息。 Status:用来判断session状态。Active:正执行SQL语句。Inactive:等待操作。Killed:被标注为删除。 Machine:死锁语句所在的机器。 Program:产生死锁的语句主要来自哪个应用程序。 4)查看引起死锁的语句:

死锁问题的相关研究

死锁问题的相关研究 摘要死锁是计算机操作系统学习中的一个重点,进程在使用系统资源时易产生死锁问题,若何排除、预防和避免死锁,是我们所要研究的重要问题。 关键词银行家算法;存储转发;重装死锁 所谓死锁是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去.此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。 1产生死锁的原因及其必要条件 1)产生死锁的原因。因为系统资源不足;进程运行推进的顺序不合适;资源分配不当等。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。 2)产生死锁的四个必要条件。互斥条件:一个资源每次只能被一个进程使用。请求与保持条件(占有等待):一个进程因请求资源而阻塞时,对已获得的资源保持不放。不剥夺条件(不可抢占):进程已获得的资源,在未使用完之前,不能强行剥夺。循环等待条件:若干进程之间形成一种头尾相接的循环等待资源关系。 这四个条件是死锁的必要条件,只要系统发生死锁,这些条件必然成立,而只要上述条件之一不满足,就不会发生死锁。 2死锁的解除与预防 理解了死锁的原因,尤其是产生死锁的四个必要条件,就可以最大可能地避免、预防和解除死锁。在系统设计、进程调度等方面注意如何不让这四个必要条件成立,如何确定资源的合理分配算法,避免进程永久占据系统资源。 1)有序资源分配法。这种算法资源按某种规则系统中的所有资源统一编号(例如打印机为1、磁带机为2、磁盘为3、等等),申请时必须以上升的次序。 采用有序资源分配法:R1的编号为1,R2的编号为2;PA:申请次序应是:R1,R2;PB:申请次序应是:R1,R2;这样就破坏了环路条件,避免了死锁的发生。 2)银行算法。避免死锁算法中最有代表性的算法是DijkstraE.W于1968年提出的银行家算法。该算法需要检查申请者对资源的最大需求量,如果系统现存的各类资源可以满足申请者的请求,就满足申请者的请求。这样申请者就可很快

关于系统死锁问题的分析

关于系统死锁问题的分析 一.定义 死锁是指任务无限期等待不可能满足的条件的一种状态。死锁相当于一种没有推出转换的状态,或者是推出转换本身建立在不可能出现的事件之上。二.产生条件 死锁的产生须具备四个必要条件: 1)任务要求对共享资源进行互斥控制。 2)任务在等待其他资源被释放的同时,保持着某些资源的所有权。 3)任务不会强制释放资源。 4)存在循环等待条件。 当任务A的前置不变式是任务B的结束,同属任务B的前置不变式是任务A 结束的时候,就存在循环等待条件。 三.解决方法 以上四个条件是出现死锁的必要条件,所以只要他们之中任何一个条件失效就可以完全避免死锁。在所列出来的条件中,条件2和4是最容易破坏的。要破坏条件2,必须强行施加一种系统策略,即在请求其他共享资源的同时不能锁住任何资源。这通常可以通过仔细设计来实现。 使用带监护条件的临界区可以防止这种条件的发生,如在FreeRTOS中可以调用portENTER_CRITICAL()函数关掉中断以防止中断对临界区操作的影响。同时,临界区必须只具有很短的时间,否则会反过来影响中断响应时间。在每次调用portENTER_CRITICAL()之后,必须尽快地配套调用portEXIT_CRITICAL()函数以推出临界区。如果出现临界区太长而不适合简单地关中断来实现,可以采用挂起调度器的方式,但是唤醒调度器确实一个相对较长的操作,所以须根据实际情况对这两种方法恰当的应用。 要破坏条件4,则必须在每当某个任务申请某个共享资源的时候阻塞所有其他任务的继续执行。这些被阻塞的任务一直被阻塞,直到持有资源的任务释放所有的共享资源为止。在FreeRTOS中通过互斥信号量实现上述功能。互斥信号量用于控制两个或多个任务间访问共享资源。在用于互斥的场合,互斥量从概念上可看作是与共享资源关联的令牌。一个任务想要合法地访问资源,其必须先成功地得到该资源对应的令牌。当令牌持有者完成资源使用,其必须马上归还令牌。只有归还了令牌,其他任务才可能成功持有,也才可能安全地访问该共享资源。一个任务除非持有了令牌,否则不允许访问共享资源。

操作系统死锁练习 Exercise-5题

Deadlocks 1、判断题 (1) 死锁避免比死锁预防对系统条件限制更严格,所以使得系统资源利用率不高。…(错) (2) 若进程资源分配图中含有环,则一定有进程处于死锁状态。……………………………(错)2、填空题 (1) 产生死锁的根本原因是(资源相对不足)与(推进顺序不合理) (2) 预防死锁的基本思想要求进程申请资源时遵循某种协议,打破产生死锁的(必要条件) (3) 银行家算法的思想是分配资源前,判断(资源分配后系统仍处于安全状态),若是,才分配 3、某系统中有5个并发进程,都需要同类型资源3个,试问该系统不会发生死锁的最少资源数是多少?并说明原因。 5 * 2 + 1 = 11个,每个进程有两个资源的前提下,只要有一个额外的资源就不会发生死锁,总有一个进程可以运行,结束后其他进程再申请资源就可以。 4、假设系统配有相同类型的m个资源,系统中有n个进程,每个进程至少请求一个资源(最多不超过m)。请证明,当n个进程最多需要的资源数之和小于(m+n) 时,该系统不会发生死锁。 由题意可知: 1 <= Need <= m Max之和< m+ n 若要发生死锁则allocation之和=m Need之和= max之和- allocation之和 Need之和< n 所以必有一个进程的need=0 与 1 <= Need <= m 矛盾! 5、现有五个进程A,B,C,D,E共享R1,R2,R3,R4这四类资源,进程对资源的 需求量和目前分配情况如下表。若系统还有剩余资源数分别为R1类2个,R2类6个, R3类2个和R4类1个,请按银行家算法回答下列问题: (1) 目前系统是否处于安全状态? (2) 现在如果进程D提出申请(2,5,0,0) 个资源,系统是否能为它分配资源? 进程Allocation Max Available R1 R2 R3 R4 R1 R2 R3 R4 R1 R2 R3 R4 A 3 6 2 0 5 6 2 0 2 6 2 1

死锁原因和解决方法

1 简单的死锁(不同表,相同资源竞争) 连接1 Set nocount on; Use testdb; Go Begin tran Update dbo.T1 set col1 = col1 + 1 where keycol = 2; 目前链接1获取排它锁,并且一直保持。 连接2 Set nocount on; Use testdb; Begin tran Update dbo.T2 set col1 = col1 + 1 where keycol = 2; 链接2获取排它锁,并且一直保持。 连接1 Select col1 from dbo.T2 where keycol = 2; Commit tran 连接1被阻塞,但是这样还不算死锁,可能连接2也许会在某一时刻结束事务,释放连接1需要资源上的锁。 连接2 Select col1 from dbo.T1 where keycol = 2; Commit tran 这样产生死锁,因为每个进程都在等待另外一个进程释放他们所需要的锁。 解决方法: 如果交换事务中访问表的顺序,并假定这种变化不影响应用程序的逻辑,就可以避免这种死锁。如果两个事务按相同的顺序访问表,就不会放生这样的死锁。当你开发以特定顺序访问表的事务时,可以联系这样做,只要有必要这样做而且不影响程序的逻辑就可以。

2 因缺少索引导致的死锁(不同表不同资源无索引竞争) 当筛选列上缺少索引时就会出现这种情况。如果被筛选列上没有索引,SQLSERVER 必须扫描所有的行。因此当一个进程保持了某一行的锁时,其他的进程扫描所有的行已检查他们是否符合筛选器,而不是通过索引直接找到期望的行,这样就会发生冲突。 T1.col1和T1.col2上都没有索引 连接1 Begin tran Update dbo.T1 set col2 = col2 + 1 where col1 = 101; 连接2 Begin tran Update dbo.T2 set col2 = col2 + 1 where col1 = 203; 连接 1 Select col2 from dbo.T2 where col1 = 201; Commit tran 由于col1没有索引,SQL SERVER必须扫描所有行并获取共享锁以检查这些行是否符合筛选器。所以被连接2阻塞。 连接2 Select col2 from dbo.T1 where col1 = 103; Commit tran 同样也给阻塞,并且发生死锁。 解决方法 通过在被筛选列上创建索引,你可以避免死锁。当然,如果两个进程尝试访问相同的资源还是可能发生死锁。

第5章操作系统习题(死锁)

一、选择题 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、计算机系统发生了重大故障。 B、有多个封锁的进程同进存在。 C、若干进程因竞争资源而无休止地相互等待他方释放已占有的资源。 D、资源数目大大小于进程数或进程同时申请的资源数大大超过资源总数。 7、优先权是在创建进程时确定的,确定之后在整个进程运行期间不再改变。 A、先来先服务 B、静态 C、动态 D、短作业 8、当进程数大于资源数时,进程竞争资源会产生死锁。 A、一定 B、不一定 9、检测出发生死锁时,可以通过撤消一个进程解除死锁。上述描述是。 A、正确的 B、错误的 10、在下列解决死锁的方法中,属于死锁预防策略的是。 A、银行家算法 B、资源有序分配方法 C、死锁检测法 D、资源分配图化简法 12、以下叙述中正确的是。 A、调度原语主要是按照一定的算法,从阻塞队列中选择一个进程,将处理机分配给它。 B、预防死锁的发生可以通过破坏产生死锁的四个必要条件之一来实现,但破坏互斥条 件的可能性不大。 C、进程进入临界区时要执行开锁原语。 D、既考虑作业等待时间,又考虑作业执行时间的调度算法是先来先服务算法。 二、填空题 1、进程的调度方式有两种,一种是,另一种是。 2、死锁是指在系统中的多个无限期地等待永远不会发生的条件。 3、一种最常用的进程调度算法是把处理机分配给具有最高优先权的进程。而确定优先权的方法概括起来不外乎是基于特性和特性两种方法。前者所得到的是优先权,后者所得到的是优先权。 4、进程调度负责的分配工作。 5、在调度算法中,按照进程进入就绪队列的先后次序来分配处理机。 6、死锁产生的必要条件有四个,即、、、。 7、解除死锁常用的方法中,是从其他进程那里剥夺足够数量的资源给死锁进程,以解除死锁状态。 8、如果要求所有进程一次性申请它所需要的全部资源。若系统有足够的资源分配给进程,

相关主题
文本预览
相关文档 最新文档