下面是一个并发进程的程序代码,正确的是()。 semaphore x1=x2=y=1; int c1=c2=0; P1( )P2( ) { { while(1) {while(1) {[br][/br] P(x1);P(x2);[br][/br] if(++c1==1) P(y);if(++c2==1) P(y);[br][/br] V(x1);V(x2);[br][/br] computer(A);computer(B);[br][/br] P(x1);P(x2);[br][/br] if(--c1==0) V(y);if(--c2==0) V(y);[br][/br] V(x1); V(x2);[br][/br] }}[br][/br] }}
A: 进程不会死锁,也不会“饥饿”
B: 进程不会死锁,但是会“饥饿”
C: 进程会死锁,但是不会“饥饿”
D: 进程会死锁,也会“饥饿”
A: 进程不会死锁,也不会“饥饿”
B: 进程不会死锁,但是会“饥饿”
C: 进程会死锁,但是不会“饥饿”
D: 进程会死锁,也会“饥饿”
举一反三
- 下面是一个并发进程的程序代码,正确的是() Semaphore xl=x2=y=1; int cl=c2=0; P1() [ while(1)[ P(x1); if(++c1=1)p(y); V(x1); computer(B); P(x1); f(--c1==0)V(y); V(x1); ] ] P2() [ while(1)[ P(x2); if(++c2==1)P(y); V(x2); computer(A); P(x2); if(--c2==0)(y); V(x2); ] ] A: 进程不会死锁,也不会“饥饿” B: 进程不会死锁,但是会“饥饿” C: 进程会死锁,但是不会“饥饿” D: 进程会死锁,也会“饥饿”
- 下面是一个并发进程的程序代码,正确的说法是______。 semaphore x1=x2=y=1; int c1=c2=0; P1()} P2(){ P(x1); P(x2); if(++c1==1) P(y); if(++c2==1) P(y); V(x1); V(x2); computer(A); computer(B); P(x1); P(x2); if(--c1==0) V(y); if(--c2==0) V(y); V(x1); V(x2); } } A: 进程不会死锁,也不会饥饿 B: 进程不会死锁,但是会饥饿 C: 进程会死锁,但是不会饥饿 D: 进程会死锁,也会饥饿
- 下面是一个并发进程的程序代码,正确的说法是()。semaphorex1=x2=y=1;intc1:c2=0:cobeginprocedureP1procedureP2P(x1);P(x2);if(++cl=1)P(y);if(++c2=1)P(y);V(x1);V(x2);computer(A);computer(B);P(x1);P(x2);if(--c1=0)V(y);if(--c2=0)V(y);V(x1);V(x2);endendcoend A: 进程不会死锁,也不会饥饿 B: 进程不会死锁,但是会饥饿 C: 进程会死锁,但是不会饥饿 D: 进程会死锁,也会饥饿
- 有两个优先级相同的并发进程P1和P2,它们的执行过程如下。设当前信号量s1=0,s2=0,当前z=2,进程运行结束后,x、y和z的值分别是( )。[br][/br]进程P1 进程P2[br][/br]y=1; x=1; [br][/br]y=y+2; x=x+1;[br][/br]z=y+1; P(s1);[br][/br]V(s1); x=x+y;[br][/br]P(s2); z=x+z;[br][/br]y=z+y; V(s2); A: 5,9,9 B: 5,9,4 C: 5,12,9 D: 5,12,4
- 设x为整数,x的补码=<br/>1 ,x1…x7,若按x A: x1 =1,x2~x7任意 B: x1<br/>= 0, x2<br/>~x7至少有一个为1 C: x1 = 0,<br/>x2~x7任意 D: x1 =1,<br/>x2 ~x7至少有一个为1