一个系统中存在某类资源m个,被n个进程共享。资源的分配和释放必须一个一个进行,请证明在以下两个条件下不会发生死锁: 每个进程需要资源的最大数在1~m之间; 所有进程需要的资源总数小于m+n;

题目
一个系统中存在某类资源m个,被n个进程共享。资源的分配和释放必须一个一个进行,请证明在以下两个条件下不会发生死锁: 每个进程需要资源的最大数在1~m之间; 所有进程需要的资源总数小于m+n;
参考答案和解析

如果没有搜索结果或未解决您的问题,请直接 联系老师 获取答案。
相似问题和答案

第1题:

某操作系统有T个同类资源。现有两个进程P1和P2分别需要申请M和N个这类资源,M+N>>T,M<T且N<T。规定:进程只能在运行过程中逐个地申请并得到资源,只有在得到所有资源后才会立即释放所有资源,在没有达到所需要的资源总数时不会释放资源。令进程P1和P2在某一时刻拥有的资源数量分别为m和n个,那么,只有在(26)时,系统是安全的。

A.M+N<T

B.M+N≤T

C.(x<(T-N))∩(y<N)∪((T-M)≤x<M)∩(y<(T-M))∪(x=(T-N)∩(y=(T-M))

D.(0≤x<(T-N))∪(x<(T-M))


正确答案:C
解析:本题考查的是死锁的银行算法及其应用方面的知识。通常,在发生死锁之前,系统可以分为3种状态:安全状态、临界状态和不安全状态。所谓安全状态是指此时只要根据系统制定的资源分配粒度,只要资源可供分配,不管如何分配都不会最后导致系统死锁;所谓临界状态是安全状态与不安全状态之间的过渡状态,此时必须对资源的分配强制实行某些策略,实行某种意义上的定向分配策略,对某些用户即使资源可供分配也不能分配;不安全状态则是死锁的前奏,它是一种不可逆状态,死锁是它的必然归宿。在这3种状态之间,安全状态可以进入临界状态,临界状态可以进入不安全状态。银行算法要求系统实现知道每个进程所需要的每类资源的总需要量,而且规定资源只能逐个申请并获得。只有在某类资源全部得到后,进程才一起将它们释放。本题是单类资源的死锁问题。上图可以比较直观地说明问题。图中黑点代表当前两个进程的资源获得情况,黑点的横坐标代表当前分配给进程的P1资源数量m,纵坐标代表当前分配给进程P2的资源数量n。由于进程在资源没有全部得到之前不会释放,黑点的移动只能是上移或右移,而且将不可能移出斜线x+y=T到达绿色区域的右上部(因为系统拥有的资源总数为T)。而且由于进程需要的资源总量是确定的,黑点将只能在黄色部分和绿色矩形的左下半部分内单调向上或向右移动。而且,由于进程一旦得到全部资源将立即释放,所以黑点不可能停留在黄色区域的上边线和右边线。这样,当黑点处于黄色区域(含黄、绿区域交界线的交点)时,系统处于安全状态;黑点处于黄色区域和绿色区域的交界线时,系统处于临界状态;黑点处于绿色区域时,系统处于不安全状态。显然,x,y均不小于0时隐含的。黄色区域的条件是:(x(T-N))∩(yN)∪((T-M)≤xM)∩(y(T-M)))黄、绿区域交界线的交点的条件是:x=(T-N)∩y=(T-M)于是,安全区域的条件为:(x(T-N))∩(yN)∪((T-M)≤xM)∩(Y(T-M))≤(x=(T-N)∩(y=(T-M))正确答案应是C。

第2题:

若有3个并发进程共享某类资源,且每个进程需要2个此类资源,为保证该系统不发生死锁,此类资源的最少数量应是()。

A.3

B.4

C.5

D.6


参考答案:B

第3题:

若系统中有若干进程共享5个R类资源,下列哪一种情况不可能发生死锁?( )

A) 系统中有6个进程,每个进程需要1个资源

B) 系统中有5个进程,每个进程需要2个资源

C) 系统中有4个进程,每个进程需要3个资源

D) 系统中有3个进程,每个进程需要4个资源

A.

B.

C.

D.


正确答案:A

第4题:

若有3个并发进程共享某类资源,且每个进程需要2个此类资源,为保证该系统不发生死锁,此类资源的最少数量应是()。

  • A、3
  • B、4
  • C、5
  • D、6

正确答案:B

第5题:

某系统有同类资源m个供n个进程共享,如果每个进程最多申请k个资源(1≤k≤m),为保证系统不发生死锁,则各进程的最大需求量之和应()

  • A、 为m
  • B、 为m+n
  • C、 小于m+n
  • D、 大于m+n

正确答案:C

第6题:

若有4个并发进程共享某类资源,且每个进程需要3个此类资源,则使该系统不会发生死锁的最少资源数是()。

A.6

B.7

C.8

D.9


参考答案:D

第7题:

一个操作系统有20个进程,竞争使用30个同类资源,申请方式是逐个进行,一旦某个进程获得了它的全部资源,就马上归还所有的资源,每个进程最多使用30,最少使用一个资源。20个进程需要的资源总数小于50。如果仅考虑这类资源,系统会产生死锁吗?请说明理由。
设max(i)表示第i个进程的最大资源需求量,
need(i)表示第i个进程还需要的资源量,
alloc(i)表示第i个进程已分配的资源量。
由题中所给条件可知:
max(1)+…+max(20)=(need(1)+…need(20))+(alloc(1)+…+alloc(20))<50
如果在这个系统中发生了死锁,那么一方面30个资源R应该全部分配出去,即(反证法)alloc(1)+…+alloc(20)=30
另一方面所有进程将陷入无限等待状态。
由上述两式可得:need(1)+…+need(20)<20(关键)
上式表示死锁发生后,20个进程还需要的资源量之和小于20,这意味着此刻至少存在一个进程i,need(i)=0,即它已获得了所需要的全部资源。既然该进程已获得了它所需要的全部资源,那么它就能执行完成并释放它占有的资源,这与前面的假设矛盾,从而证明在这个系统中不可能发生死锁。

第8题:

假设有3个进程竞争同类资源,如果每个进程需要2个该类资源,则至少需要个该类资源,才能保证不会发生死锁。


正确答案:4
针对本题,首先可以使用逆向思维进行思考:3个进程,每个进程需要两个同类资源,那么总共需多少个资源呢?有以下几种情况。
—    资源总数为1,则不管哪个资源占用该资源,都会导致无条件死锁。
—    资源总数为2,可分两种情况:一个进程占用两个资源,直到它执行完毕后释放,然后又由另一进程同时占用这两个资源,由最后一个进程使用,这样不会导致死锁;两个资源若不为某一进程独占,将会导致死锁,一般称这种状态是不安全的。
—    资源总数为3,与第(2)条同理。
—    资源总数为4,则无论资源如何分配,都不会导致死锁。
用公式可以总结如下:
资源总数(安全的)= 进程数 ´(每个进程所需资源数-1)+ 1

第9题:

N个进程共享M个资源,每个进程一次只能申请/释放一个资源,每个进程最多需要M个资源,所有进程总共的资源需求少于M+N个,证明该系统此时不会产生死锁。 


正确答案: 设max (i)表示第i个进程的最大资源需求量,need(i)表示第i个进程还需要的资源量,alloc(i)表示第i个进程已分配的资源量。由题中所给条件可知: 
max(1)+┅+max(n)=(need(1)+┅+need(n))+((alloc(1)+┅+alloc(n)) 如果在这个系统中发生了死锁,那么一方面m个资源应该全部分配出去,          
alloc(1)+ ┅+alloc(n)=m 
另一方面所有进程将陷入无限等待状态。可以推出          
need(1)+ ┅+need(n) 上式表示死锁发生后,n个进程还需要的资源量之和小于n,这意味着此刻至少存在一个进程i,need(i)=0,即它已获得了所需要的全部资源。既然该进程已获得了它所需要的全部资源,那么它就能执行完成并释放它占有的资源,这与前面的假设矛盾,从而证明在这个系统中不可能发生死锁。

第10题:

考虑一个由四个同类资源组成的系统,有三个进程共享这些资源,每个进程至多需要两个资源,试说明该系统是无死锁的。


正确答案:假设三个进程,每个进程都需要两个资源,最坏的情况,每个进程都占有了一个资源,申请第二个资源,而此时系统中剩余一个资源,不管这个资源分给哪一个进程,都能满足它的资源要求,因此它能在有限的时间里运行结束而释放所占有的两个资源,这两个资源又可以分给另外两个进程,使它们能够运行结束,因此,此系统是无死锁的。

更多相关问题