理解死锁

产生的必要条件:
1.互斥条件:一段时间内,某资源只能由一个进程占用。如果其他人想请求这个资源,只能等待,直到占有这个资源的进程使用完毕。
2.请求和保持:占着茅坑不那啥条件。进程已经持有一些资源,但提出了新的资源要求,可是该资源被其他人占用了,这个时候该进程阻塞,且不会释放自己已经占有的资源。
3.不剥夺条件:进程已经获得的资源,未使用完之前,不能被剥夺,只能在使用完之后呢,自己释放。
4.环路等待条件:发生死锁时,必然存在一个进程-资源的环形链。

处理死锁的基本方法:

1.预防死锁:简单,直观。策略是设置某些限制条件,去破坏产生死锁的四个必要条件中的一个或者几个。
缺点:限制太严格会导致系统的资源利用率降低和系统吞吐量下降。

2.避免死锁:也是一种实现预防的策略,但是呢,不是用各种限制去破坏四个基本条件,而是在分配时,用一点策略防止进入不安全状态。限制条件较弱,因此不会对系统的资源利用率和系统吞吐量有太大影响。但是缺点是实现并不容易。

3.检测死锁:这个就更酷了,没有任何限制条件,任你随便搞,搞出来死锁,会被即时检测出来,斌精确的确定是哪些进程和资源。然后,然后,清除。。。

4.解除死锁:与3配合使用。

3和4的组合,实现上也有难度。

重点是避免死锁的策略。

分配策略:首先是允许进程动态地申请资源,但是申请资源之前,要计算此次资源分配的安全性。若是此次分配,系统不会进入不安全状态,则分配给他,否则,让进程等待。
安全状态的概念:系统能够按照某种进程顺序(P1,P2,P3,…,Pn)这个安全序列,来为每个Pi分配所需资源,直到满足每个进程对资源的最大需求,使得每个进程都能顺利地完成。如果找不到这样的序列,则系统处于不安全状态。

应当注意的是,即使是不安全状态,也不意味着一定不安全,只是风险较高。我们的目的是规避这个风险。
即,只要是安全状态,那么系统就不会进入不安全状态。

重点研究银行家算法(其实很简单啦!)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值