一.什么是死锁:
多个线程或进程在竞争资源时,产生一种僵持的现象,若无外力作用,无法推进。
二.产生死锁的原因
1.系统资源不足
2.进程推进顺序不当
三.产生死锁的必要条件
1.互斥条件 哲学家进餐
2.不剥夺条件 不能抢夺资源
3.请求和保持条件
4.循环等待条件 形成闭环 ---充分条件
四.死锁的处理策略
1.预防死锁
破坏四个必要条件
破坏互斥条件 ---资源变为共享资源
破坏不剥夺条件 ---把原来资源释放掉
破坏请求和保持条件 ---
破坏循环等待 --- 按顺序申请资源 --会导致资源利用率变低
2.避免死锁
让系统处于安全状态,就不会产生死锁 --- 银行家算法
不安全状态,就可能发生死锁
银行家算法
总数100
最大需求 已借走 最多还会借
a 70 20 50
b 40 10 30
t 50 30 20剩余40
如果40被a借走,三个人都不能得到可以还款的钱,就会死锁
被b,c借走则不会,b借走30就能还款,或者c借走20能还款,所以这里不会把钱借给a
3.死锁的检测与解除
图 消除变法
五.死锁的解除
1.资源剥离法
2.撤销进程法
3.进程回退法
六.清除对象如何考虑
1.进程优先级
2.已经执行时长
3.还有多长时间完成
4.进程已占用多少
死锁是指多个线程或进程在争夺资源时形成的僵局,通常由资源不足或进程推进顺序不当引起。产生死锁的必要条件包括互斥、不剥夺、请求和保持、循环等待。处理死锁的策略包括预防、避免和检测解除。预防死锁可通过破坏四个必要条件;避免死锁通过确保系统处于安全状态;检测与解除死锁则涉及资源剥离、撤销进程或进程回退等方法。银行家算法是一种避免死锁的方法,通过确保资源分配不会导致系统进入不安全状态。
580

被折叠的 条评论
为什么被折叠?



