死锁的产生和解决概述

1 死锁的概念

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

2 死锁产生的原因

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

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

2.2 死锁产生原因

竞争资源引起进程死锁

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

竞争不可剥夺资源

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

  1. 可剥夺资源,是指某进程在获得这类资源后,该资源可以再被其他进程或系统剥夺

    例如,优先权高的进程可以剥夺优先权低的进程的处理机。
    又如,内存区可由存储器管理程序,把一个进程从一个存储区移到另一个存储区,此即剥夺了该进程原来占有的存储区,甚至可将一进程从内存调到外存上,可见,CPU和主存均属于可剥夺性资源

  2. 不可剥夺资源,当系统把这类资源分配给某进程后,再不能强行收回只能在进程用完后自行释放

    如磁带机、打印机等。

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

系统中只有一台打印机R1和一台磁带机R2,可供进程P1和P2共享。
假定PI已占用了打印机R1,
P2已占用了磁带机R2,
若P2继续要求打印机R1,P2将阻塞;
P1若又要求磁带机,P1也将阻塞。
于是,在P1和P2之间就形成了僵局,两个进程都在等待对方释放自己所需要的资源,但是它们又都因不能继续获得自己所需要的资源而不能继续推进,从而也不能释放自己所占有的资源,以致进入死锁状态。

竞争临时资源

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

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

3.1 死锁预防方法

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

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

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

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

3.2 解决死锁的方法

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

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

?abc!

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值