测试和set()锁定操作系统中的进程同步-它们如何用于N个进程

时间:2018-12-01 09:53:42

标签: operating-system

您好,程序员们, 我目前正在学习操作系统,并且遇到了关键部分问题。我无法理解测试和设置的控制流程/算法流程。说有两个过程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的算法轨迹,将对您有很大帮助。

0 个答案:

没有答案