操作系统-死锁

必要条件
互斥条件:每个资源要么已经分配给了一个进程,要么就是可用的。
占有和等待条件:已经得到了某个资源的进程可以再请求新的资源
不可抢占条件:已经分配给一个进程的资源部能强制性地被抢占,它只能被占有它的进程显式地释放
环路等待条件:有两个或者两个以上的进程组成一条环路,该环路的每个进程都在等待下一个进程所占有的资源。

处理方法

鸵鸟策略
死锁检测与死锁恢复
死锁预防
死锁避免

鸵鸟策略
直接不解决,我看不见,等于没有发生。当发生死锁时不会对用户造成多大影响,或发生死锁的概率很低,可以采用鸵鸟策略。

死锁检测与死锁恢复
不试图阻止死锁,而是当检测到死锁发生时,采取措施进行恢复。
1、每种类型一个资源的死锁检测。
2、每种类型多个资源的死锁检测。
3、死锁恢复:利用抢占、回滚恢复或者通过杀死进程恢复

死锁预防
破坏4个条件中的其中一个

死锁避免

在程序运行时避免发生死锁
安全状态
定义:如果没有死锁发生,并且即使所有进程突然请求对资源的最大需求,也仍然存在某种调度次序能够使得每一个进程运行完毕,则称该状态是安全的。
安全状态的检测与死锁的检测类似,因为安全状态必须要求不能发生死锁。

单个资源的银行家算法
一位银行家,他向一群客户分别承诺了一定的贷款额度,算法要做的是判断对请求的满足是否会进入不安全状态,如果是,就拒绝请求;否则予以分配。
多个资源的银行家算法
检查一个状态是否安全的算法如下:
1、查找右边的矩阵是否存在一行小于等于向量A。如果不存在这样的行,那么系统将会发生死锁,状态是不安全的。
2、假若找到这样一行,将该进程标记为终止,并将其已分配资源加到A中。
3、重复以上两步,直到所有进程都标记为终止,则状态时安全的。
如果一个状态不是安全的,需要拒绝进入这个状态。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值