假设系统中有三类互斥资源R1、R2、R3,可用资源数分别是9、8、5。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如表5-1所示,如果进程按(3)序列执行,那么系统状态是安全的。

admin2019-05-23  27

问题 假设系统中有三类互斥资源R1、R2、R3,可用资源数分别是9、8、5。在T0时刻系统中有P1、P2、P3、P4和P5五个进程,这些进程对资源的最大需求量和已分配资源数如表5-1所示,如果进程按(3)序列执行,那么系统状态是安全的。

选项 A、P1->P2->P4->P5->P3
B、P2->P1->P4->P5->P3
C、P2->P4->P5->P1->P3
D、P4->P2->P4->P1->P3

答案C

解析 所谓安全状态,是指系统能按某种进程顺序(P1,P2,…,Pn),来为每个进程Pi分配其所需的资源,直到满足每个进程对资源的最大需求,使每个进程都可以顺利完成。如果无法找到这样的一个安全序列,则称系统处于不安全状态(死锁)。
   如何保证系统处于安全状态可以避免死锁的发生,银行家算法是一个古典的测试算法。银行家算法的基本思想是:当某个进程提出申请时,必须判断将资源分配给该进程后,会不会引起死锁。若不会,则进行分配;否则就不分配。这样做能保证在任何时刻至少有一个进程可以得到所需的全部资源而执行结束,并将归还资源加入到系统的剩余资源中,这些资源又至少可以满足一个进程的最大需求,于是保证所有进程都能在有限的时间内得到需求的全部资源。
   按照银行家算法的思想,当进程请求资源时,系统将按如下原则分配资源:
   (1)当一个进程对资源的最大需求量不超过系统中的资源数时可以接纳该进程。
   (2)进程可以分期请求资源,但请求的总数不能超过最大需求量。
   (3)当系统现有的资源不能满足进程尚需资源数时,对进程的请求可以推迟分配,但总能使进程在有限的时间里得到资源。
   (4)当系统现有的资源能满足进程尚需资源数时,.必须测试系统现存的资源能否满足该进程尚需的最大资源数,若能满足则按当前的申请量分配资源,否则也要推迟分配。
   在本题中序列已经给出,我们只需将4个选项按其顺序执行一遍,便可以判断出现死锁的三个序列。
   在判断之前,先求出各资源的剩余数:
   R1=9-(1+2+2+1+1)=2
   R2=8-(2+1+1+2+1)=1
   R3=5-(1+1+3)=0
   由于R3,资源为0,系统不能再分配R3资源了,所以不能一开始就运行需要分配R3资源的进程。因此,A和D显然是不安全的,下面只需考虑选项B和C。
   首先,看序列P2->P4->P5->P1->P3是否安全,如表5-2所示。
   
   因此,该序列是安全的。
   最后,看序列P2->P4->P5->P1->P3是否安全,如表5-3所示。
   
   这时候,我们发现进程P1需要凡资源为5个,系统能提供的R1资源为4个,所以序列无法进行下去,为不安全序列。
转载请注明原文地址:https://kaotiyun.com/show/98TZ777K
0

相关试题推荐
最新回复(0)