转可变或严格的交替方式

转变量或严格交替方法是在用户模式下实施的软件机制。这是一个繁忙的等待解决方案, 只能对两个进程实施。在这种方法中, 使用了一个转变量, 它实际上是一个锁。
此方法只能用于两个线程。通常, 让两个线程为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。
可移植性
【转可变或严格的交替方式】该解决方案提供了可移植性。它是在用户模式下实现的纯软件机制, 不需要操作系统的任何特殊说明。
转可变或严格的交替方式

文章图片

    推荐阅读