您好,程序员们, 我目前正在学习操作系统,并且遇到了关键部分问题。我无法理解测试和设置的控制流程/算法流程。说有两个过程P0和P1,请您帮我跟踪以下算法的流程。
do
{
waiting[i]=TRUE;
key=TRUE;
while(waiting[i] && key)
key=TestandSet(&lock);
waiting[i]=FALSE;
//critical section
j=(i+1)%n;
while((j!=i) && !waiting[j])
j=(j+1)%n;
if(j==i)
lock=FALSE;
else
waiting[i]=FALSE;
//remainder section
}while(TRUE);
boolean TestandSet(boolean *target)
{
boolean rv=*target;
*target=TRUE;
return rv;
}
如果可以的话,请向我解释过程P0和P1的算法轨迹,将对您有很大帮助。