|
知识路径: > 计算机软件与网络基础知识 > 操作系统 > 操作系统基本原理 > 处理器管理 > 死锁问题 >
|
考试要求:掌握
相关知识点:3个
|
|
|
|
银行家算法是指在分配资源之前先看清楚资源分配后是否会导致系统死锁。如果会死锁,则不分配,否则就分配。
|
|
|
按照银行家算法的思想,当进程请求资源时,系统将按如下原则分配资源:
|
|
|
(1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
|
|
|
(2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
|
|
|
(3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
|
|
|
(4)当系统现有的资源能满足进程尚需资源数时,必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。
|
|
|
对于这些内容,关键在于融会贯通地理解与应用,为了帮助考生更好地理解,下面,我们通过一个例子来说明银行家算法的应用。
|
|
|
假设系统中有三类互斥资源R1、R2和R3,可用资源数分别是9、8和5。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如下表所示。进程按照P1→P2→P4→P5→P3序列执行,系统状态安全吗?如果按P2→P4→P5→P1→P3的序列呢?
|
|
|
|
|
在这个例子中,我们先看一下未分配的资源还有哪些?根据试题给出的条件,从上表中可以看出,很明显,还有2个R1未分配,1个R2未分配,而R3全部分配完毕。
|
|
|
按照P1→P2→P4→P5→P3的顺序执行时,首先执行P1,这时由于其R1、R2和R3的资源数都未分配够,因而开始申请资源,得到还未分配的2个R1,1个R2。但其资源仍不足(没有R3资源),从而进入阻塞状态,并且这时所有资源都已经分配完毕。因此,后续的进程都无法得到能够完成任务的资源,全部进入阻塞,死锁发生了。
|
|
|
而如果按照P2→P4→P5→P1→P3的序列执行时:
|
|
|
(1)首先执行P2,它还差1个R2资源,系统中还有1个未分配的R2,因此满足其要求,能够顺利结束进程,释放出2个R1、2个R2、1个R3。这时,未分配的资源就是:4个R1、2个R2、1个R3。
|
|
|
(2)然后执行P4,它还差一个R3,而系统中刚好有一个未分配的R3,因此满足其要求,也能够顺利结束,并释放出其资源。因此,这时系统就有5个R1、4个R2、1个R3。根据这样的方式推下去,会发现按这种序列可以顺利地完成所有的进程,而不会出现死锁现象。
|
|
|
从这个例子中,我们也可以体会到,死锁的4个条件是如何起作用的。只要打破任何一个条件,都不会产生死锁。
|
|
|