在多道程序系统中,由于多个进程的并发执行,改善了系统资源的利用率并提高了系统的处理能力。然而,多个进程的并发执行也带来了新的问题——死锁。所谓死锁是指多个进程因竞争资源而造成的一种僵局(互相等待),若无外力作用,这些进程都将无法向前推进。
产生死锁条件。
产生死锁的主要原因是供共享的系统资源不足,资源分配策略和进程进顺序不当。系统资源既可能是可重复使用的永久性资源,也可能是消耗性的临时资源。
死锁的必要条件是:
1、互斥条件、
2、保持和等待条件、
3、不剥夺条件、
4、环路等待条件。
解决死锁有两种策略:
一种是在死锁发生前采用的预防和避免策略;
另一种是在死锁发生后采用的检测与恢复策略
死锁的几种处理策略的比较见表2-14。
– | 资源分配策略 | 各种可能模式 | 主要优点 | 主要缺点 |
---|---|---|---|---|
死锁预防 | 保守,宁可资源闲置 | 一次请求所有资源,资 源剥夺,资源按序分配 | 适用于做突发式处理的进程,不必进行剥夺 | 效率低,进程初始化时间延长;剥夺次数过多;不便灵活申请新资源 |
死锁避免 | 是”预防“和”检测“ 的折中(在运行时判断是否可能死锁) | 寻找可能的安全允许顺序 | 不必进行剥夺 | 必须知道将来的资源需求;进程不能被长时间阻塞 |
死锁检测 | 宽松,只要允许就分配资源 | 定期检查死锁是否已经发生 | 不延长进程初始化时间,允许对死锁进行现场处理 | 通过剥夺解除死锁,造成损失 |
死锁避免策略,则是在系统进行资源分配时,先执行一个死锁避免算法(典型的如银行家算法),以保证本次分配不会导致死锁发生。由于资源分配很频繁,因此死锁避免策略要耗费大量的 CPU 和时间。
例:
某系统中有3个并发进程,都需要同类资源4 个,试问该系统
不会发生死锁的最少资源数是(B )
A、 9 B、 10 C、 11 D、 12
例:
假设某计算机系统中资源R的可用数为6,系统中有3个进程竞
争R,且每个进程都需要 i 个R,该系统可能会发生死锁的最小
i 值是(C) 。若信号量S的当前值为-2,则R的可用数和等待R
的进程数分别为(D) 。
A. 1 B. 2 C. 3 D. 4
A. 0、 0 B. 0、 1 C. 1、 0 D. 0、 2
http://blog.csdn.net/bigpudding24/article/details/48608579
https://blog.csdn.net/weiyongle1996/article/details/71511956