进程P0和P1的共享变量定义及其初值如下: boolean flag[2]; int turn=0; flag[0]=false; flag[1]=false; 若进程P0和P1访问临界资源的伪代码按照下面设计

admin2019-05-20  41

问题 进程P0和P1的共享变量定义及其初值如下:
    boolean    flag[2];
    int turn=0;
    flag[0]=false;
    flag[1]=false;
    若进程P0和P1访问临界资源的伪代码按照下面设计:
    void P0(){//进程P0                     void PI(){//进程P1
       while(TRUE){                             while(TRUE){
         flag[0]=TRUE;                           flag[0]=TRUE;
         turn=1;                                     turn=0;
         while(flag[1]&&(turn==1))                while(flag[0]&&(turn==0))
              临界区;                                      临界区;
         flag[0]=FALSE;                          flag[1]=FALSE;
       }                                          }
    }                                          }
    则并发执行进程P0和P1时产生的情况是(    )。

选项 A、不能保证进程互斥进入临界区,会出现“饥饿”现象
B、不能保证进程互斥进入临界区,不会出现“饥饿”现象
C、能保证进程互斥进入临界区,会出现“饥饿”现象
D、能保证进程互斥进入临界区,不会出现“饥饿”现象

答案A

解析 从题中给出的伪代码可知,由于信号量nag的赋值方法不对,因此会使得不能保证进程互斥进入临界区,会出现“饥饿”现象。
转载请注明原文地址:https://kaotiyun.com/show/4LCi777K
0

相关试题推荐
最新回复(0)