处理器管理-死锁问题

来源:互联网 发布:电影极度寒冷知乎 编辑:程序博客网 时间:2024/05/17 07:04

产生死锁的4个必要条件:

(1)互斥条件:即一个资源每次只能被一个进程使用。

(2)保持和等待条件:一个进程已获得了一些资源,但请求其他资源时被阻塞,因此对已获得的资源保持不放。

(3)不可剥夺条件:当某个进程获取这种资源后,系统不能强行收回,只能由进程使用完时自己释放。

(4)循环等待条件:若干个进程形成链,每个都占用对方要申请的下一个资源。


银行家算法

所谓银行家算法,是指在分配资源之前先看清楚,资源分配后是否会导制系统死锁,如果会死锁,则不分配,否则就分配。
(1)当一个进程对资源的最大需求不超过系统中的资源数时,可以接纳该进程。
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
(3)当系统现在的资源不能满足进程没需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
(4)当系统现有的资源满足进程尚需资源数时,必须测试系统现存的资源能否满足进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。


解决死锁的策略:
(1)预防:破坏死锁必要条件中的任意一个。预防通常会降低系统的效率。
资源一次性分配:破坏请求和保持条件。
可剥夺资源:即当某个进程新的资源未满足时,释放已占有的资源(破坏不可剥夺条件)
资源有序分配:系统给每类资源编号,每一个进程按编号递增的请求资源,释放则相反(破坏环路等待条件)
(2)避免:由于预防策略会严重地损害系统性能,因此在避免策略时,要施加软弱的限制,允许进程动态地申请资源,但在分配之前预先计算资源分配的安全性,若此次分配不安全,则不进行此次资源的分配,代表性的避免死锁的算法就是银行家算法。
(3)检测:预防和避免都是事前措施,而死锁的检测是判断系统是否处于死锁状态,如果是,则执行死锁解除策略。
(4)解除:这是与死锁检测结合使用的,它使用的方式就是剥夺,即半某进程所拥有的资源强行收回,分配给其他的进程。