第3章 进程同步与通信 第7课时 死锁《操作系统原理课件(第2版)》 同步教学(电子工业出版社)
2023-08-30
|
18页
|
102人阅读
|
0人下载
普通
内容正文:
操作系统原理(第2版)
交通堵塞问题
一个十字路口有东西南北4个方向的车流,假设没有红绿灯也没有交警指挥,并且假设4个方向的排头车辆几乎同时到达十字路口,为了防止撞车都停了下来,即形成了如下图所示的交通死锁。可见交通死锁的含义是两辆或两辆以上的车辆中每一辆车都在等待另一辆车释放道路资源而无法前进。
3.8 死锁
3.8.1 产生死锁的原因和必要条件
系统资源分为两类:可抢占资源和不可抢占资源。
(1)可抢占资源。某进程获得这类资源后,该资源可以再被系统或其他进程抢占。CPU就是这类资源的代表,正在执行的进程所使用的CPU可以被具有更高优先权的新就绪进程抢占。内存也常作为可抢占性资源使用。
从死锁角度看,一般不会因为竞争可抢占资源而使系统进入死锁状态。
(2)不可抢占资源。某进程获得这类资源后,该资源不能再被其他进程所抢占,只能在进程使用完毕后由该进程自己释放;否则,可能引起进程的计算失败。
讨论死锁时所指的资源通常指不可抢占资源。
3.8 死锁
各类资源的说明
由于不可抢占资源只能互斥使用,故必然是互斥资源。如打印机既是互斥资源又是不可抢占资源,而CPU虽然是互斥资源但却是可抢占资源。即不可抢占资源必然是互斥资源,而互斥资源却不一定是不可抢占资源,因此不可抢占资源只是互斥资源的一个子集。同理,临界资源只能互斥使用,所以也是互斥资源,而且临界资源只能由使用它的进程释放,故也属于不可抢占资源。
3.8 死锁
死锁定义:多个进程在并发执行过程中因争夺不可抢占资源而造成的一种僵局。当这种僵局状态出现时,其中一组进程或所有进程都处于永远等待(阻塞)状态。若无外力作用,这组进程或所有进程都无法继续向前推进,这种僵局就是死锁。
系统出现死锁,有可能导致整个计算机系统瘫痪,因此怎样事先预防死锁的发生,以及当死锁发生后怎样及时解除死锁是操作系统设计中要解决的重要问题之一。
3.8 死锁
死锁与死循环的区别:
(1)从产生来看。死锁具有偶然性,而死循环具有必然性。实际上,死锁是一种小概率事件,一组进程只有在某种特定的交替执行场合才会发生死锁,而绝大多数情况下不会出现死锁。而对存在死循环的程序来说,在一次执行中出现了死循环,那么在相同的初始条件下,再次执行则必然出现死循环。
(2)从进程状态来看。一组进程处于死锁则它们都处于阻塞状态,即它们都没有占用CPU运行;而死循环的程序则始终占用CPU运行。
(3)从产生的原因看。死锁是由于操作系统采用多道程序的并发执行、进程之间对互斥资源共享等引起的,即与操作系统的管理和控制有关;而死循环则是因程序员的程序设计不当或编写错误造成的。
3.8 死锁
死锁与饥饿的区别:
(1)饥饿状态的进程是长时间得不到CPU,而其他所需资源均已获得,一旦得到CPU就可以立即运行;而处于死锁状态的进程则是除了CPU之外还有其他资源也未得到(被另一个或几个进程占用),即使把CPU分配给它也不能够执行。
(2)处于死锁状态的进程都在相互等待对方占用的资源,则处于死锁状态的进程至少有两个;而处于饥饿状态的进程仅是因为没有调度它执行,故可能只有一个。
3.8 死锁
下图给出了两个进程P1和P2申请资源的例子。假定不可抢占资源R1和R2均只有一个,在并发执行中进程P1已经获得资源R1,进程P2已经获得了资源R2。
这时,进程P1执行中又要申请资源R2,但因其已被进程P2占用而得不到,致使进程P1阻塞。此时只能由进程P2执行,但进程P2执行中又需要资源R1,因其被进程P1占用而得不到,致使进程P2也阻塞。这样,进程P1和进程P2都在等待对方释放资源而无法执行,并且这种等待僵局将一直持续下去,从而产生了死锁。
3.8 死锁
3.8 死锁
下图中两个进程P1和P2申请和释放资源R1和R2的执行推进过程示意,如图所示。当进程P1和P2的推进按图中③的轨迹进行时,就会进入阴影区,这个阴影区就是进程运行的不安全区,凡是进入不安全区的进程,最终总会到达死锁点D而发生死锁。
如果进程P1和P2的执行推进过程是按图中①或②进行的,就不会发生死锁。
产生死锁的原因:
(1)系统资源不足。产生死锁的根本原因是可供多个进程共享的系统资源不足。当多个进程需求资源的总和大于系统能够提供的资源时,进程间就可能会因竞争不可抢占式资源而导致死锁;并且,死锁的发生总是在进程提出资源请求时。
(2)进程推进顺序不当。由于系统中各进程都以各自独立地速度向前推进,就可能出现按这种顺序联合推进使所有进程都能正常运行到结束;而按另一种顺序联合推进,将导
由于学科网是一个信息分享及获取的平台,不确保部分用户上传资料的 来源及知识产权归属。如您发现相关资料侵犯您的合法权益,请联系学科网,我们核实后将及时进行处理。