1、有两个并发进程,对于如下程序的运行,正确的说法是()。
int x,y,z,t,u;
P1()
{
while(1){
x=1;
y=0;
if x>=1 then y=y+1;
z=y;
}
}
P2()
{
while(1){
x=0;
t=0;
if x<=1 then t=t+2;
u=t;
}
}
- A:程序能正确运行,结果唯一
- B:程序不能正确运行,可能有两种结果
- C:程序不能正确运行,结果不确定
- D:程序不能正确运行,可能会死锁
解析
本题中两个进程不能正确地工作,运行结果的可能性如下说明。
1. x=1;
2. y=0;
3. if x>=1 then y=y+1;
4. z=y;
5. x=0;
6. t=0;
7. if x<=1 then t=t+2;
8. u=t;
不确定的原因是由于使用了公共变量x,考查程序中与变量x有关的语句共四处。
执行的顺序是1->2->3->4->5->6->7->8时,结果是y=1,z=1,t=2,u=2,x=2;
并发执行过程是1->2->5->6->3->4->7->8时,结果是y=0,z=0,t=2,u=2,x=0;
执行的顺序是5->6->7->8->1->2->3->4时,结果是y=1,z=1,t=2,u=2,x=1;
执行的顺序是5->6->1->2->7->8->3->4时,结果是y=1,z=1,t=2,u=2,x=1。
很明显,无论执行顺序如何,x的结果只能是0或1,因此语句7的条件一定成立,即t=u=2的结果是一定的;而y=z必定成立,只可能有0,1两种情况,又不可能出现x=1,y=z=0的情况,所以总共只有3中结果。
答案:C
2、一个进程在获得资源后,只能在使用完资源后由自己释放,这属于死锁必要条件的()。
- A:互斥条件
- B:请求和释放条件
- C:不剥夺条件
- D:防止系统进入不安全状态
解析
一个进程再获得资源后,只能在使用完资源后由自己释放,即它的资源不能被系统剥夺,答案为C选项。
答案:C
3、死锁定理是用于处理死锁的()方法。
- A:预防死锁
- B:避免死锁
- C:检测死锁
- D:解除死锁
解析
死锁定理是用于检测死锁的方法。
答案:C
4、某计算机系统中有8台打印机,由K个进程竞争使用,每个进程最多需要3台打印机。该系统可能会发生死锁的K的最小值是()。
- A:2
- B:3
- C:4
- D:5
解析
考虑最极端的情况。因为每个进程最多需要3台打印机,若每个进程已经占有了2台打印机,则只要还有多的打印机,总能满足一个进程达到3台的条件,然后顺利执行,所以将8台打印机分给K个进程,每个进程有2台打印机,这个情况最极端,K为4。
答案:C
5、下列关于银行家算法的叙述中,正确的是()。
- A:银行家算法可以预防死锁
- B:当系统处于安全状态时,系统中一定无死锁进程
- C:当系统处于不安全状态时,系统中一定会出现死锁进程
- D:银行家算法破坏了死锁必要条件中的“请求和保持”条件
解析
银行家算法是避免死锁的方法,选项A、D错。
并非所有不安全状态都是死锁状态,但当系统进入不安全状态后,便可能进入死锁状态;反之,只要系统处于安全状态,系统便可避免进入死锁状态;死锁状态必定是不安全状态。
所以选项B对,选项C错。
答案:B
6、某系统有n台互斥使用的同类设备,三个并发进程分别需要3,4,5台设备,可确保系统不发生死锁的设备数n最小为()。
- A:9
- B:10
- C:11
- D:12
解析
三个并发进程分别需要3,4,5台设备,当系统只有(3-1)+(4-1)+(5-1)=9台设备时,第一个进程分配2台,第二个进程分配3台,第三个进程分配4台。这种情况下,三个进程均无法继续执行下去,发生死锁。当系统中再增加1台设备,即10台设备时,最后1台设备分配给任意一个进程都可以顺利执行完成,因此保证系统不发生死锁的最小设备数为10。
答案:B
7、若系统 S 1 S_1 S1采用死锁避免方法, S 2 S_2 S2采用死锁检测方法。下列叙述中,正确的是()。
Ⅰ、
S
1
S_1
S1会限制用户申请资源的顺序,而
S
2
S_2
S2不会
Ⅱ、
S
1
S_1
S1需要进程运行所需的资源总量信息,而
S
2
S_2
S2不需要
Ⅲ、
S
1
S_1
S1不会给可能导致死锁的进程分配资源,而
S
2
S_2
S2会
- A:仅Ⅰ、Ⅱ
- B:仅Ⅱ、Ⅲ
- C:仅Ⅰ、Ⅲ
- D:Ⅰ、Ⅱ、Ⅲ
解析
死锁的处理采用三种策略:死锁预防、死锁避免、死锁检测和解除。
死锁预防采用破坏产生死锁的4个必要条件中的一个或几个来防止发生死锁。其中之一的“破坏循环等待条件”,一般采用顺序资源分配法,首先给系统的资源编号,规定每个进程必须按编号递增的顺序请求资源,即限制了用户申请资源的顺序,因此Ⅰ的前半句属于死锁预防的范畴。
银行家算法是著名的死锁避免算法,其中的最大需求矩阵Max定义了每个进程对m类资源的最大需求量,系统在执行安全性算法中都会检查次资源试分配后,系统是否处于安全状态,若不安全则将本次的试探分配作废。在死锁的检测和解除中,系统为进程分配资源时不采取任何措施,但提供死锁的检测和解除手段,因此Ⅱ、Ⅲ正确。
答案:B
8、假设系统中有4个同类资源,进程 P 1 P_1 P1, P 2 P_2 P2和 P 3 P_3 P3需要的资源数分别为4,3和1, P 1 P_1 P1, P 2 P_2 P2和 P 3 P_3 P3已申请到的资源数分别为2,1,和0,则执行安全性检测算法的结果是()。
- A:不存在安全序列,系统处于不安全状态
- B:存在多个安全序列,系统处于安全状态
- C:存在唯一安全序列 P 3 P_3 P3, P 1 P_1 P1, P 2 P_2 P2,系统处于安全状态
- D:存在唯一安全序列 P 3 P_3 P3, P 2 P_2 P2, P 1 P_1 P1,系统处于安全状态
解析
由题意可知,仅剩最后一个同类资源,若将其分给 P 1 P_1 P1或 P 2 P_2 P2,则均无法正常执行;若分给 P 3 P_3 P3,则 P 3 P_3 P3正常执行完成后,释放的这一个资源仍无法使 P 1 P_1 P1, P 2 P_2 P2正常执行,因此不存在安全序列。
答案:A
9、下列关于死锁的叙述中,正确的是()。
Ⅰ、可以通过剥夺进程资源解除死锁
Ⅱ、死锁的预防方法能确保系统不发生死锁
Ⅲ、银行家算法可以判断系统是否处于死锁状态
Ⅳ、当系统出现死锁时,必然有两个或两个以上的进程处于阻塞态
- A:仅Ⅱ、Ⅲ
- B:仅Ⅰ、Ⅱ、Ⅳ
- C:仅Ⅰ、Ⅱ、Ⅲ
- D:仅Ⅰ、Ⅲ、Ⅳ
解析
答案:B
10、若系统中有n(n$\geq$2)个进程,每个进程均需要使用某类临界资源2个,则系统不会发生死锁所需的该类资源总数至少是()。
- A:2
- B:n
- C:n+1
- D:2n
解析
极端情况,当临界资源数为n时,每个进程都拥有1个临界资源并等待另一个资源,会发生死锁。当临界资源数为n+1时,则n个进程中至少有一个进程可以获得2个临界资源,顺利运行完后释放自己的临界资源,使得其他进程也能顺利运行,不会产生死锁。