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