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将永远没有机会进入该区段。因此,他们将无限期地等待