单选题
7.进程P0和P1的共享变量定义及其初值如下:
boolean flag[2];
int turn=O;
flag[O]=false;
flag[1]=false;
若进程.PO和P1访问临界资源的伪代码按照下面设计:
void PO(){//进程PO void P1(){//进程Pl
while(TRUE){ while(TRUE){
flag[0]=TRUE; flag[0]=TRUE;
turn=1;turn=0;
while(flag[1]&&(turn==1)) while(nag[0]&&(turn==0))
临界区; 临界区;
flag[0]=FALSE; flag[1]=FALSE;
} }
} }
则并发执行进程PO和P1时产生的情况是( )。
【正确答案】
A
【答案解析】从题中给出的伪代码可知,由于信号量flag的赋值方法不对,因此会使得不能保证进程互斥进入临界区,会出现“饥饿”现象。