试就Mutual Exclusion、Progress、Bounded Waiting论述以下解决双进程临界区问题的算法是错误的: Process PO: do{ flag[0]=true; While(flag[1]);

admin2012-06-21  64

问题 试就Mutual Exclusion、Progress、Bounded Waiting论述以下解决双进程临界区问题的算法是错误的:
  Process PO:
  do{
    flag[0]=true;
    While(flag[1]);
    Critical section
    Flag[0]=false;
    Remainder section;
  }while(1);
    process P1:
    do
    {
    flag[1]=true;
While(flag[0]);
    Critical section
    Flag[1]=false;
    Remainder section;
    }while(1);

选项

答案(1)进程P0,P1通过flag[i]实现互斥。因为不管flag[0]、flag[1]的初值如何,进程i获得CPU后,首先使flag[i]为true,然后判断另一进程是否在临界区,这样至少有一个进程在while语句中等待,直到另一个进程退出临界区。 (2)假设进程0,先执行flag[0]=true,然后CPU转去执行进程1中的flag[1]=true,这样两个进程都在while循环中空转,系统进入死锁状态,所以不能满足有空让进。 (3)由(2)可以看出,也不能保证有限等待。

解析
转载请注明原文地址:https://kaotiyun.com/show/SNxi777K
0

最新回复(0)