操作系统原理学习笔记(十五)-死锁概述
资源问题
- 可重用性资源:
每个资源仅能分配给一个进程使用,不允许共享。
使用资源时,先请求资源,再使用资源,最后释放资源。
系统中该资源数目固定,进程运行时不能创建与删除。 - 可消耗性资源:
在进程运行时可变化。
进程运行时可创建。
进程运行时可消耗。
资源一般由生产者创建,消费者消耗,典型的是进程间通信的消息。 - 可抢占性资源:该资源可被抢占,如处理机的抢占。
- 不可抢占性资源:不可被抢占的资源。
计算机系统中的死锁
死锁现象于P115页有图解。
- 竞争不可抢占性资源引起死锁:两个进程同时访问一不可抢占性资源,且都希望对方关闭该文件,因此会无限期等待,陷入死锁。
- 竞争可消耗资源引起死锁:有两个进程向对方发送消息后再接受对方的消息,此时可以正常运行。但当进程要求先收消息再发消息时,会陷入死锁。
- 进程推进顺序不当引起死锁:进程A的执行是先请求MN资源,后释放MN资源,进程B也是请求MN资源,后释放MN资源,当A运行后再执行B,会正常运行。但当进程A未结束,进程B开始运行,此时可能出现MN资源同时被请求,此时运行出错。
死锁的定义
一组进程发生死锁时,该组进程中每个死锁进程都在等待另一个死锁进程占用的资源。
导致这组进程无限制等待下去。
产生死锁的必要条件
四个必要条件都满足,才会产生死锁。
- 互斥条件:占用的资源是互斥的。
- 请求和保持条件:进程占用了一临界资源,又请求了一新的临界资源。
- 不可抢占条件:进程占用的资源仅可在进程使用完后释放。
- 循环等待条件:死锁的进程会存在资源的循环链,如A需求B资源,B需求C资源,C需求A资源。
处理死锁的方法
- 预防死锁:设置某些限制条件,防止四个条件同时满足。
- 避免死锁:同样是实现预防策略,是在资源的动态分配过程中,用某方法防止进程进入不安全状态。
- 检测死锁:无需预防,在检测机构检测到死锁后,采取适当措施处理。
- 解除死锁:检测到死锁时,通过撤销进程,回收资源来解除死锁。
四种方法从上到下对死锁的防范程度逐渐减弱,资源利用率提高,进程因资源因素而阻塞的频度下降(并发程度提高)。
共有 0 条评论