死锁的概念
1.什么是死锁
各进程互相等待对方手里的资源,导致各进程都阻塞,无法向前推进
2.死锁、饥饿、死循环的区别
1.死锁:至少是两个进程一起死锁,死锁进程处于阻塞态
2.饥饿:可以只有一个进程饥饿,饥饿进程可能阻塞也可能就绪
3.死循环:可能只有一个进程发生死循环,死循环的进程可上处理机
4.死锁和饥饿是操作系统要解决的问题,死循环是应用程序员要解决的
3.死锁产生的必要条件
1.互斥条件:对必须互斥使用的资源的争抢才会导致死锁
2.不剥夺条件:进程保持的资源只能主动释放,不可强行剥夺
3.请求和保持条件:保持着某些资源不放的同时,请求别的资源
4.循环等待条件:(1)存在一种进程资源的循环等待链 (2)循环等待未必死锁,死锁一定有循环等待
4.什么时候会发生死锁
对不可剥夺资源的不合理分配,可能导致死锁
5.死锁的处理策略
1.预防死锁:破坏死锁产生的四个必要条件
2.避免死锁:避免系统进入不安全状态(银行家算法)
3.死锁的检测和解除:允许死锁发生,系统负责检测出死锁并解除