操作系统学习:死锁

记录一些关于死锁的知识。

死锁的定义:

在一组进程发生死锁的情况下,这组进程中的每一个进程,都在等待另一个进程所占有的资源。换句话说,每个进程所等待的事件是该组的其它进程释放所占有的资源。

产生死锁的条件:

1.互斥条件:
进程对所分配的资源进行排它性的使用,即一段时间内,某个资源只能被一个进程占用。
2.请求和保持条件:
进程已经保持了至少一个资源,此时要申请新的资源,而该资源已经被其他进程占有。此时请求进程被阻塞,但是对自己占有的资源依然保持不放。
3.不可抢占条件:
进程已获得的资源只能由自己释放后,才能被其他进程所使用。其它进程不可抢占资源。
4.循环等待条件:
在产生死锁时,必然存在一个进程——资源的循环链。如进程集合{p0,p1,p2,…,pn}中,po在等待p1的资源,p1在等待p2,依次类推,pn在等待p0的资源。

处理死锁的方法

1.预防死锁:
(1)破坏请求和保持条件:
第一种协议:所有进程在开始运行之前,一次性申请整个运行过程中的全部资源。但这种方法资源被严重浪费,恶化了资源的利用率,还会使进程产生饥饿现象。
第二种协议:允许一个进程只获得初期所需的资源后,便开始运行。在运行过程中,如果有使用完毕的进程,则将其逐步释放,然后再请求新的资源。
(2)破坏不可抢占条件:
进程已占有的资源可以被暂时的释放,或者说被抢占,从而破坏不可抢占条件。但是这个方法实现复杂,且需要很大的代价。资源被强占,可能导致前一段工作的失效。而且还可能因为反复的申请和释放资源导致进程的执行被无限推迟,延长了进程的周转时间,增加系统开销,降低系统的吞吐量。
(3)破坏循环等待条件:
对系统所有的资源类型进行线性排序,排序后规定每个进程必须按照序号递增的顺序请求资源。
2.避免死锁
银行家算法。
3.检测死锁
4.解除死锁
(1)抢占资源:从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。
(2)终止进程。
2.1 终止所有死锁进程。但是付出的代价会很大。
2.2 逐个终止进程
按照某种顺序,逐个的终止进程,直至有足够的资源,以打破循环等待,把系统从死锁状态解脱出来。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值