死锁:在并发环境下,各进程因为争夺资源而造成的一种互相等待对方手里的资源,导致进程都阻塞,无法向前推进的现象。发生死锁后,如果没有外力的干涉,这些进程都无法向前推进。
死锁:各进程互相等待对方手里的资源,无法向前推进的现象。
饥饿:由于长时间得不到想要的进程,某进程无法向前推进的现象。
产生死锁的必要条件:
互斥条件:只有对必须互斥使用的资源进行争抢才会导致死锁
不可剥夺条件
请求和保持的条件:进程保持了至少一个资源,同时又在源源不断的请求新的资源,而新的资源又是被别的资源所占有的。
循环等待:存在一种进程资源的循环等待链。
什么时候会发生死锁:
1.各个进程对不可剥夺的资源发生竞争
2.各进程推进顺序非法
3.信号量使用不当
死锁的处理策略:
预防死锁:破坏四个必要条件中的一个
避免死锁:用某种方法避免死锁进入不安全状态(银行家算法)
死锁的检测与解除:允许死锁的发生,不过操作系统能检测出死锁,并且解除。