多线程进程与死锁

三个进程共享4个互斥资源,则每个进程最多申请多少个资源时,系统不会死锁()? A. 1 B. 2 C. 3 D. 4

2个。
死锁是系统提供的资源少于进程所需要的资源总数所引起的,设3个进程分别为a、b、c,若是每个进程最多申请的资源数为于3,假设申请资源的顺序为a-a-b-c-a-b-c,当4个资源都被进程占用时,a占2个,b占1个,c占1个,这时当a还要申请资源时,必须得等到b或者c释放一个,同样的b、c也是这样,于是就进入死锁状态。
若最多申请2个资源,因为有4个资源,所以不论怎样,总有一个进程能申请到2个资源,这样就不需要等待别的进程释放资源而能顺利地执行,然后就会释放这两个资源,接下来后面两个进程就更可以顺利执行了。

因为共有3个进程,4个资源,进程数小于资源数,则不会发生死锁的公式为
①最多申请资源数=资源总数/进程数(可以整除的条件下)
②最多申请资源数=(资源总数/进程数)+1(不可以整除的条件下)
所以本题用②的计算方式,得出结果为4/3+1=2  

猜你喜欢

转载自www.cnblogs.com/xiaoxiaoxiao136/p/9755407.html