0
点赞
收藏
分享

微信扫一扫

死锁的产生和解决概述

西红柿上校 2022-02-25 阅读 56

1 死锁的概念

两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象若无外力作用,它们都将无法推进下去

2 死锁产生的原因

2.1 产生死锁的四个必要条件

1、互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用
2、不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放
3、请求和保持,即当资源请求者在请求其他的资源的同时,保持对原有资源的占有。
4、循环等待,即存在一个等待队列:P1占有P2的资源,P2占有P3的资源,P3占有P1的资源。这样就形成了一个等待环路

2.2 死锁产生原因

竞争资源引起进程死锁

系统资源不足以满足诸进程的需要时,会引起诸进程对资源的竞争而产生死锁。

竞争不可剥夺资源

系统中的资源可以分为两类:

  1. 可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺
  2. 不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回只能在进程用完后自行释放

系统中所配置的不可剥夺资源,由于它们的数量不能满足诸进程运行的需要,会使进程在运行过程中,因争夺这些资源而陷于僵局

竞争临时资源

临时资源:指由一个进程产生,被另一个进程使用,短时间后便无用的资源,故也称为消耗性资源,如硬件中断、信号、消息、缓冲区内的消息等,它也可能引起死锁。

3 避免(预防)和解决死锁

3.1 死锁预防方法

破坏死锁产生的4个必要条件来 预防死锁,由于资源互斥是资源使用的固有特性是无法改变的

破坏“不可剥夺”条件:当一进程占有一独占性资源后又申请一独占性资源而无法满足,则退出原占有的资源。

破坏”请求与保持条件“:采用资源预先分配策略,即进程运行前申请全部资源,满足则运行,不然就等待,这样就不会占有且申请。

破坏“循环等待”条件:实现资源有序分配策略,对所有设备实现分类编号,所有进程只能采用按序号递增的形式申请资源

3.2 解决死锁的方法

1、预防死锁:通过设置一些限制条件,去破坏产生死锁的必要条件

2、避免死锁:在资源分配过程中,使用某种方法避免系统进入不安全的状态,从而避免发生死锁

3、检测死锁允许死锁的发生,但是通过系统的检测之后,采取一些措施,将死锁清除掉

4、解除死锁:该方法与检测死锁配合使用

举报

相关推荐

0 条评论