📅  最后修改于: 2020-12-14 03:39:46             🧑  作者: Mango
转变量或严格交替方法是在用户模式下实施的软件机制。这是一个繁忙的等待解决方案,只能对两个进程实施。在这种方法中,使用了实际上是锁的turn变量。
此方法只能用于两个过程。通常,让两个过程为Pi和Pj。他们共享一个称为转弯变量的变量。程序的伪代码可以如下所示。
对于过程Pi
Non - CS
while (turn ! = i);
Critical Section
turn = j;
Non - CS
对于过程Pj
Non - CS
while (turn ! = j);
Critical Section
turn = i ;
Non - CS
锁定变量方法的实际问题是,仅当锁定变量为1时,进程才进入关键部分。多个进程可以同时将锁定变量视为1,因此不能保证互斥。那里。
转弯可变方法解决了这个问题。现在,仅当转弯变量的值等于过程的PID时,过程才能进入关键部分。
转弯变量i或j只能有两个值。如果它的值不是i,那么它肯定是j,反之亦然。
通常,在进入部分中,过程Pi直到其值为j才进入临界部分,或者过程Pj直到其值为i才进入临界部分。
最初,两个进程Pi和Pj可用,并且要执行到关键部分。
转弯变量等于i,因此Pi将有机会进入临界区。 Pi的值保持为I,直到Pi完成关键部分。
Pi完成其关键部分并将j赋给变量。 Pj将有机会进入关键部分。转弯的值一直保持j,直到Pj完成其临界区为止。
让我们基于四个需求来分析严格交替方法。
严格的交替方法在每种情况下都提供互斥。此过程仅适用于两个过程。对于这两个过程,伪代码是不同的。该流程仅在看到转弯变量等于其流程ID时才进入,否则就不会进入。因此,无论其转向如何,任何流程都不能进入关键部分。
这种机制无法保证取得进展。如果Pi不想轮流进入临界区,则Pj会无限期地被挡住。 Pj必须等待这么长时间,因为转弯变量将保持为0,直到Pi将其分配给j。
该解决方案提供了可移植性。它是在用户模式下实现的纯软件机制,不需要操作系统的任何特殊说明。