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

admin2013-09-16  55

问题 试就MutualExclusion、Progress、BoundedWaiting论述以下解决双进程临界区问题的算法是错误的:
Process PO:
  do{
    flag[O]=true;
    While(flag[1]);
    Critical section
    Flag[O]=false;
    Remaindersection;
    }while(1);
    process P1:
    do
    {
    flag[1]=true;
   While(flag[O]);
    Critical section
    Flagr[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,然后CPIJ转去执行进程1中的flag[1]=true,这样两个进程都在while循环中空转,系统进入死锁状态,所以不能满足有空让进。 (3)由(2)可以看出,也不能保证有限等待。

解析
转载请注明原文地址:https://jikaoti.com/ti/62ajFFFM
0

最新回复(0)