【操作系统】 --死锁

一. 死锁产生的条件

  1. 资源互斥。一类资源同一时间只能是给一个进程
  2. 请求与保持。 进程在获取其他资源被阻塞时,对已经获得的资源保持不放
  3. 不可剥夺。 进程获得的资源是不可被剥夺抢占的。(打印机等)
  4. 形成了环路等待。 进程与资源之间形成了环路等待。

二. 解决死锁的办法

2.1 预防死锁(破坏死锁产生的条件)

  1. 资源一次性分配
  2. 只要有一个资源得不到分配,那么不给这个进程分配资源
  3. 当某个进程得不到某个资源时,释放其拥有的资源
  4. 资源有序分配,给每一个资源编上号码。然后,按照顺序分配

2.2 避免死锁

银行家算法避免死锁

2.3 死锁检测

系统执行安全性检查,如安全,则分配成立;否则试探险性分配作废,系统恢复原状,进程等待。

安全性算法:

(1) 设置两个工作向量Work=Available;Finish[i]=False

(2) 从进程集合中找到一个满足下述条件的进程,

 Finish [i]=False;

 Need[i,j]≤Work[j];

 如找到,执行(3);否则,执行(4)

(3) 设进程获得资源,可顺利执行,直至完成,从而释放资源。

Work[j]=Work[j]+Allocation[i,j];

Finish[i]=True;

go to step 2;

(4) 如所有的进程Finish[i]=true,则表示安全;否则系统不安全。

2.4 死锁解除

一旦检测出死锁,就应立即釆取相应的措施,以解除死锁。死锁解除的主要两种方法:

  1. 抢占资源。从一个或多个进程中抢占足够数量的资源,分配给死锁进程,以解除死锁状态。

  2. 终止(或撤销)进程。终止(或撤销)系统中的一个或多个死锁进程,直至打破循环环路,使系统从死锁状态解脱出来。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值