首页 > 试题广场 >

某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会

[单选题]
某系统中有3个并发进程,都需要同类资源4 个,试问该系统不会发生死锁的最少资源数是:
  • 9
  • 10
  • 11
  • 12
推荐
xxj头像 xxj
 本题考查多道程序系统中的死锁基础知识。
  死锁是指多个进程因竞争系统资源或相互通信而处于永远阻塞状态,若无外力作用,这些进程都无法向前推进。死锁的产生与资源的使用相关,死锁产生的原因之一就是资源竞争,如果系统中只有一个进程在运行,所有资源为一个进程独享,则不会产生死锁现象。
  死锁产生的另外一个原因是进程的推进顺序不当,竞争资源虽然可能导致死锁,但是资源竞争并不等于死锁,只有在进程运行顺序不当的时候才会出现死锁。死锁产生的必要条件包括:互斥条件、不剥夺条件、请求和保持条件、循环等待条件,当发生死锁时候,这四个条件必须都满足。
  在本题目中,当有三个并发进程同时对资源进行申请时,最可能发生死锁的情况是三个进程当前各自都占据了3个资源,此时,只再需要1个该类资源,即可以在这种情况下不发生死锁。
答案:B
编辑于 2015-08-03 16:35:35 回复(3)
三个进程,都需要同类资源四个,当有10个这样的资源的时候,无论你怎么分配都一定先有一个满足了需要4个资源的条件,他先跑完,就可以释放资源给其他进程了,如果少一个,也就是九个资源,又可能是(3,3,3),这样就刚好这三个进程都跑不动。。。
发表于 2018-09-16 10:28:47 回复(1)
那为什么m个进程,分别分n个机器就不会死锁呢?因为一个进程,当达到n个资源的时候,不会再索取其他资源了,自动就释放最后一个资源的锁,依次,剩下资源也得以释放。
发表于 2020-08-06 09:51:55 回复(0)
教科书上死锁产生的条件是1.抢占不放开2.申请其他资源3.申请不到不放弃4,成环;总结就是抢占了一个资源同时去申请其他资源,申请不到不放弃,从而形成环路;
--------------------------------------------------------------

死锁产生的必要是资源的申请/给予及资源分配图成环,只要再额外多加一个资源某给一个申请者,让它不去申请能引起成环的资源而是去申请这个另外的资源,就能打破环条件,所以问题变成了最多多少个资源能引发死锁;
而能引起死锁的环可以是2个申请者间的环,也可以是3个申请者间的环,而要算最大的死锁环,故是3个人;而3个申请者间的环,可以是3个申请者与3个资源的一重环,也可以是3个申请者与6个资源的2重环,以此类推,要算最大的死锁环,就是3重环,(4重环直接人均分配一个资源了,就打破了申请其他的条件),
而3个3重环加一则打破,即3x3+1
------
也就是上面提到的,如果各自都占用n-1个资源(n是要申请的资源),就成了死锁的环条件,加一个就能破环
发表于 2019-12-07 14:22:38 回复(0)
看了答案写下我的理解吧。首先出现死锁的条件就不说了,但是做这个题目必须得知道。然后看题,问的是不出现死锁的最小资源数,上面的大佬给出公式答案为10,有同学可能会有疑惑,为什么不能是9,不能是8,原因很简单,少于10的话还是有可能出现死锁的。假设为9,可能产生死锁,也可能不会产生死锁,不符合题意啊(线程A占有3个资源,线程B占有3个资源,线程C占有3个资源,形成了循环等待,存在死锁的可能)。同理资源数为8时,可能会产生死锁,也可能不会产生死锁,但是题目问的是不产生死锁的最小资源数。所以最小为10,无论如何不会产生死锁。
发表于 2018-11-13 13:07:16 回复(0)
抽屉原理,当有10个资源分配给3个编程时,任何情况都至少有1个线程有4个资源
发表于 2018-03-02 13:21:04 回复(0)
选临界值,即发生死锁时刻,m个进程,每个进程需要n台机器,(n-1,n-1,n-1……n-1)先给m个进程依次分配 n-1台机器,之后这m台机器都去抢夺最后一台机器,进入死锁状态,则总得机器资源数目为:(n-1)*m+1  上面m=3, n=4代入得 10 
发表于 2015-08-30 22:26:15 回复(4)

三个进程1、2、3的执行都需要A、B、C、D四个资源,那么最少的分配情况就是,我给你3个A,3个B,3个C,1个D,然后你们三个进程分别得到了ABC,差个D就可以进行任务了,然后三个进程就去抢夺这个D,而这个过程是不会发生死锁的。


抢夺资源这个过程本身不会发生死锁,因为资源是一整块的,可以用原子性来理解,所以不存在一个进程占有这个资源的一半的这种情况。
而当D被其中一个进程占用后,其他两个进程是无法进行资源抢占的,所以就阻塞等待直到资源释放,再抢夺再等待

死锁的发生是因为:我进程1要执行一个任务,这个任务同时需要资源A、B,而我进程1在抢占了A资源后要抢占B时发现B已经被另一个进程抢占了,这个时候另一个进程又不放手资源B,所以就僵持到天亮等等等等等等等等等等等等


个人理解,有错望指教

编辑于 2017-09-09 12:13:42 回复(1)

//我的理解:当3个进程,都只需要1个同类资源时,是不可能发生死锁的,对于那个资源,一次只会让一个进程去用,用完后给下一个。

死锁发生的情况应该是2个进程a,b,都需要同类资源2个x,y。当a拿了x资源,b拿了y资源,那程序就会死锁。因为每个进程都必需同时拥有x,y才能运行。如果这时候把同类资源数变为3个,则不会发生死锁,也是最小资源数。

公式:进程*(同类资源数- 1)+ 1;

同理,此题最小资源为:3 * (4 - 1) + 1 = 10

发表于 2016-10-02 22:31:13 回复(4)
b,三个进程,都需要四个资源,假设哥哥进程已经分配了三个资源则需3*3=9,多加一个保证不会死锁所以答案为10
发表于 2015-08-05 11:02:22 回复(0)
假设3个进程都各自拥有了3个同类资源,为了保证至少有一个进程能正常运行从而不发生死锁,还得再来1个资源。这样每个进程不会因为互相等待别人释放资源才能运行
发表于 2021-06-24 10:34:35 回复(0)
先举简单的例子,A,B两个线程,抢占x个同类资源(即凑齐x个同类里的不同资源才能完成任务)
用圆来表示给的A和B分配的资源数量,如图:
所以推广到n个进程,x个资源,就是
每个圆只能和其他的圆共享1个,否则死锁,会发现共享的资源只允许有两个进程不允许第三者,否则你会神奇的发现,圆的交集变成了2:

发表于 2019-09-21 10:33:36 回复(0)

这类题利用公式n×(m-1)+1即可得出结果

发表于 2018-08-26 09:05:10 回复(0)
理解成 (3-1) * 4 + 1 了
编辑于 2018-08-12 23:31:13 回复(0)
我认为本题包含隐形假设:系统局部死锁不意味着系统死锁。即当局部发生死锁时,只要资源一旦充足时,死锁可以解除,只有基于这个前提进行分析,才能得出3*3+1的答案。
举个例子:两个进程各持三个资源,并陷入死锁状态,其余的四个分给另外一个进程,如果局部死锁不能解决,系统理论上仍然不能make progress。
发表于 2018-06-08 16:17:42 回复(0)
每人少一个,去抢最后一个
发表于 2018-04-22 16:42:55 回复(0)
死锁产生的必要条件包括:互斥条件、不剥夺条件、请求和保持条件、循环等待条件,当发生死锁时候,这四个条件必须都满足。
  在本题目中,当有三个并发进程同时对资源进行申请时,最可能发生死锁的情况是三个进程当前各自都占据了3个资源,此时,只再需要1个该类资源,即可以在这种情况下不发生死锁。
选临界值,即发生死锁时刻,m个进程,每个进程需要n台机器,(n-1,n-1,n-1……n-1)先给m个进程依次分配 n-1台机器,之后这m台机器都去抢夺最后一台机器,进入死锁状态,则总得机器资源数目为:(n-1)*m+1  上面m=3, n=4代入得 10 
发表于 2017-04-14 09:02:56 回复(0)
b,三个进程,都需要四个资源,假设哥哥进程已经分配了三个资源则需3*3=9,多加一个保证不会死锁所以答案为10
发表于 2016-11-04 19:24:02 回复(1)
B
发表于 2015-08-05 10:55:58 回复(0)
B
发表于 2015-06-12 19:45:55 回复(0)
研究生入学考试题
发表于 2015-03-27 17:20:17 回复(0)