乐趣区

关于操作系统:死锁的解决与预防

死锁

要理解如何解决与预防死锁,就得先理解什么是死锁。

产生起因

因为零碎中存在着一些不可剥夺资源,当两个或两个以上过程占有本身资源,并且申请对方的资源时,因为资源的不可剥夺,单方都得不到须要的资源,导致每个过程都无奈后退,从而产生死锁。

产生条件

1. 互斥
零碎中的资源都是互斥的,如果是共享的话就不会产生抢夺资源的状况。
2. 非抢占
要求零碎中的资源都是过程实现之后自主开释资源,其余的过程不能争夺此资源,
3. 循环期待
要求存在一条过程资源的循环期待链,链中的每一个过程占有的资源同时被另一个过程所申请。

解决办法

1. 毁坏互斥
2. 毁坏非抢占
3. 毁坏环路期待

预防

毁坏申请条件:一次性调配所有资源,这样就不会有申请了。
毁坏申请放弃:只有有一个资源得不到调配,就不给这个过程调配其余资源。
毁坏不可剥夺:当某过程取得了局部资源,但得不到其余资源,就开释已有资源。
毁坏环路期待条件:零碎给每类资源赋予一个编号,每一个过程按编号递增的程序申请资源,开释则相同。

防止

银行家算法
过程首次申请资源时测试,过程所须要的最大资源量,如果零碎的资源满足需要则分配资源,否则推延调配。

退出移动版