Process 测试和设置指令如何满足(或不满足)临界段方法的条件

Process 测试和设置指令如何满足(或不满足)临界段方法的条件,process,operating-system,data-synchronization,Process,Operating System,Data Synchronization,我在研究进程同步时遇到了测试和设置指令 boolean testAndSet (boolean *target) { boolean rv = *target; *target = true; return rv; } main() { do { while( testAndSet( &lock )); //critical section lock = false;

我在研究进程同步时遇到了测试和设置指令

boolean testAndSet (boolean *target)
{  
     boolean rv = *target;
     *target = true;
     return rv;
}

main()
{
      do
      {
          while( testAndSet( &lock ));

          //critical section
          lock = false;

          //remainder section
       }while(true);

 }
它以原子方式执行(即,每当发生对testAndSet的函数调用时,在函数返回之前不会处理中断)


现在我明白了这是如何消除互斥的(因为如果另一个进程正在执行它的关键部分,等待的进程就会卡在while循环中)。但它如何满足进度条件,更重要的是,它如何不满足有界缓冲区条件?如果您有任何帮助,我们将不胜感激。

对于进展情况,例如,PO处于关键区域,P1、P2和P3正在等待。一旦PO离开,它将lock设置为false,然后下一个进程退出while条件并进入临界段。 对于有界等待,我不确定,但如果让我们说,高优先级的P4来了,并反复请求进入关键部分。那么,P1、P2、P3将永远没有机会进入该区段。因此,他们将无限期地等待