操作系统--死锁
简介
在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向前推进的现象,就是死锁。发生死锁后若无外力干涉,这些进程都将无法向前推进
死锁、饥饿、死循环的区别

死锁产生的必要条件
互斥条件
不可剥夺条件
资源的占用并请求条件
循环等待条件

什么时候会产生死锁
临界资源的竞争
请求和释放资源的顺序不当

死锁处理策略
-
预防死锁,破坏死锁产生的四个必要条件中的一个或几个
-
避免死锁,用某种方法防止系统进入不安全状态,从而避免死锁(如银行家算法)
-
死锁检测和解除,允许死锁的发生,不过操作系统会负责检测死锁的发生,然后采取某种措施解除死锁
预防死锁
-
破坏互斥条件
互斥条件:只有对必须互斥使用的资源的争抢才会导致死锁

-
破坏不剥夺条件
不剥夺条件:进程所获得的资源在未使用完之前,不能有其他进程强行夺走,只能主动释放

-
破坏请求和保持条件
请求和保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源又被其他进程占用,此时请求进程被阻塞,但又对自己已有的资源保持不放

-
破坏循环等待条件
循环等待条件:存在一种进程资源的循环等待链,链中的每一个进程已获得资源同时被下一个进程所请求

避免死锁
什么是安全序列




银行家算法




银行家算法


检测和解除
死锁检测


死锁解除


浙公网安备 33010602011771号