死锁的必要条件 预防 和 解决

死锁产生的4个必要条件

互斥条件

某种资源一次只允许一个进程访问,即该资源一旦分配给某个进程,其他进程就不能再访问,直到该进程访问结束。

进程 A B 都需要 用到资源 C,A用着,B就用不了,直到A用完为止,B才能用。

占有且等待条件 ( 请求与保持条件 )

一个进程本身占有资源(一种或多种),同时还有资源未得到满足,正在等待其他进程释放该资源。

A 在 用 C 时,B 这个 进程 还没有结束 他占着 C之外的资源 还在等着 A 把 C 用完

不可抢占条件

已经分配的资源不能从相应的进程中被强制地剥夺。
一个进程不能因为需要该资源,就去把别的进程占有的资源抢过来。
A 用着 C ,B也 要用 C ,B 不能 把 C 抢过来,自己用。他不能终止A 对 C 的占有。

循环等待条件
存在一个进程链,使得每个进程都占有下一个进程所需的至少一种资源

光是 A B 满足以上三个条件 ,对 C 一个资源 进行占用,无法形成死锁。那么 在来个 小D.
A占着D,等着C。B 占着C ,等着D。谁都不让着谁。这样这两个进程 就发生了冲突。

这就 是 人性的毁灭 道德的沦丧。。。。啊呸 !

这就是 死锁!!!!

划重点 ,小本本记下来,要考的啊。

避免死锁

死锁预防, 提前预防多个进程发生死锁。

死锁有四个 必要条件,那么预防死锁,就去破坏这四个条件即可。
由于 第一个 互斥条件,非共享资源所必须的,不仅不能改变,还应加以保证。

所以 重点 破环 其他三个 条件:

a、破坏“占有且等待”条件

b、破坏“不可抢占”条件

c、破坏“循环等待”条件

这个就可能预防死锁产生。

另外还有一种方法就是
通过算法 ,在分配资源时判断是否会出现死锁,只在不会出现死锁的情况下才分配资源。

如 银行家算法

以后再继续更新,2018-10-12.

预防详情这个链接有:
https://blog.csdn.net/guaiguaihenguai/article/details/80303835

猜你喜欢

转载自blog.csdn.net/m0_37702839/article/details/83025658