一 死锁的定义:一组进程中的每一个进程在等待仅由该组进程中其他进程才能引发的实践。
二 引起死锁的怨原因:
竞争不可抢占性的资源
竞争可消耗资源
进程推进顺序不当
三 产生死锁条件:
互斥使用
保持和等待
非剥夺性
循环等待
四 处理死锁方法:
预防死锁
避免死锁
检测死锁
接触死锁
五 预防死锁:
资源一次性分配(破坏请求和保持条件)
优点:简单易行
缺点:资源严重浪费,恶化利用率,进程发生饥饿现象,增加系统开销,降低吞吐量
破坏不可抢占条件
缺点:增加系统开销降低吞吐量
破坏循环等待
优点:比起前两种资源利用率和系统吞吐量高
缺点:限制新设备的增加 资源浪费,限制用户简单自主编程
六 避免死锁
1 系统安全状态
允许进程动态地申请资源,但系统在资源分配前,应先计算此次资源分配的安全性。分配不会导致进入不安全状态,才可以将资源分配给进程,只要系统处于安全状态,系统就不会进入死锁状态,因此避免死锁状态实质在于资源分配的时候,应使系统不进入不安全状态。
安全状态:系统能按照某种进程推进序列为每个进程分配所需资源直到满足每个进程所需资源使每个进程都能顺利执行完。
2 银行家算法
第一步 判断是否存在一个安全序列,若存在一个安全序列则系统为安全的。
第二步1请求资源 判断 Request <= Need Request <= Available
第三步 假定可以分配资源 并修改 Available Allocation Need
第四步 再利用安全性算法检查此刻系统是否安全 并且得出一个安全序列,若得出来一个安全序列则系统是安全的,可以将申请的资源分配给它。