一、相关概念
1.死锁:互相等待对方手中资源,各进程都阻塞,无法向前推进的现象
2.饥饿:由于长期得不到想要的资源,导致某进程无法向前推进的现象
3.死循环:某进程一直执行某个循环的
二、产生条件
1.互斥条件:对必须互斥使用的资源进行争抢
2.不可剥夺条件:进程获得的资源在未使用完前,不能被其它进程强行夺走,只能主动释放
3.请求和保持条件:在已保持至少一个资源的同时,又去请求其它资源。
4.循环等待条件:进程资源的循环等待链-链中每个进程已获得的资源同时被下一个进程所请求。
注:发生死锁时一定有循环等待,但发生循环等待时未必死锁。
三、发生时机
1.对系统临界资源/不可剥夺的资源的竞争
2.进程推进顺序非法。
3.信号量的使用不当。
对不可剥夺资源的不合理分配,可能导致死锁
四、处理策略
1.预防死锁:破坏死锁产生的必要条件
2.避免死锁:用算法防止系统进入不安全状态
3.死锁的检测和解除:允许死锁发生,OS检测死锁发生并采取措施解除死锁。