死锁

1、死锁产生的原因

1)例如两个共享资源AB,进程P1P2并发执行。P1占有了AP2占有了B。此时,P1请求B,但BP2占有着,P1得不到满足,等待。P2请求AAP1占有着,也得不到满足,等待。互相请求对方已经占有的资源,引发死锁。----请求和释放资源的顺序不当造成

2)例如有m=5个资源被n=3个进程共享,每个进程都需要k=3个资源,资源数小于进程数需要的总和即m<n*k。若系统分配资源的策略是轮流为每个进程分配,那么第一轮每个进程分配一个,剩余2个资源。第二轮再为两个进程各分配一个,但此时系统没有资源了,就使得各进程都处于等待中,引发死锁。----多个进程共享的资源不能满足他们的需要时,引发竞争造成死锁

2、死锁的必要条件

1)互斥条件:资源同一时刻只能有一个进程使用。

2)请求与保持:已经得到资源的进程还可以继续申请新的资源。

3)非剥夺条件:已经分配的资源不能从相应的进程被强制的剥夺。

4)循环等待条件:系统中若干进程组成环路,该环路中每个进程都在等待相邻进程正占用的资源

3、死锁处理

主要包含预防、避免、检测、解除。

1)预防:限制并发进程对资源的请求,破坏死活产生的四个必要条件之一,使系统在任何时刻都不处于死锁状态。

2)避免:比较有名银行家算法,对于进程每一个系统可以满足的资源请求命令加以检测,如果发现分配资源后,系统进入不安全状态(安全状态就系统能按某一个顺序为每个进程分配所需要的资源,可以使每个进程都能顺序完成。),则不予分配;若分配资源后系统仍处于安全状态,则分配。

3)检测:不限制资源分配,即允许死锁产生。但定时检测是否产生死锁,如果产生则对其进行解除。

4)接触:通常采用资源剥夺法和撤销进程法进行死锁解除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值