产生死锁的四个必要条件:
1、互斥条件:一个资源每次只能被一个进程使用;
2、请求与保持条件:一个进程因请求资源而被阻塞时对已获得的资源保持不放;
3、不剥夺條件:进程已获得的资源,在未使用完之前不能强行剥夺;
4、循环等待条件:若干进行之间形成一种头尾相接的循环等待资源关系。
同樣的破坏上述至少一个条件即可解决死锁问题。可参考 @似是故人来 的解答:
解决死锁问题的几种方式:
一 . 预防死锁:会损坏系统性能
1. 资源┅次性分配——破坏”请求和等待“条件:即让进程开始运行时获得全部的资源在不能获得全部资源时进程等待;
2. 可剥夺资源——破坏”不剥夺“条件 :即当某进程新的资源未满足时,释放已占有的资源;
3. 资源有序分配法——破坏”循环等待“条件 :系统给每类资源赋予┅个编号每一个进程按编号递增的顺序请求 资源,释放则相反;
二. 避免死锁:银行家算法