个性化阅读
专注于IT技术分析

转可变或严格的交替方式

转变量或严格交替方法是在用户模式下实施的软件机制。这是一个繁忙的等待解决方案, 只能对两个进程实施。在这种方法中, 使用了一个转变量, 它实际上是一个锁。

此方法只能用于两个线程。通常, 让两个线程为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可用, 并且要执行到关键部分。

os对于进程Pi

转变量等于i, 因此Pi将有机会进入临界区。 Pi的值保持为I, 直到Pi完成关键部分。

os对于进程Pi 1

Pi完成其关键部分并将j赋给变量。 Pj将有机会进入关键部分。转的值一直保持j, 直到Pj完成其临界区为止。

线程Pj

严格交替法分析

让我们基于四个需求来分析严格交替方法。

互斥

严格的交替方法在每种情况下都提供互斥。此线程仅适用于两个线程。对于这两个线程, 伪代码是不同的。该线程仅在看到转变量等于其线程ID时才进入, 否则不会进入, 因此无论线程如何, 都无法进入关键部分。

进展

这种机制无法保证取得进展。如果Pi不想轮流进入临界区, 则Pj会无限期地被挡住。 Pj必须等待这么长时间, 因为转变量将保持为0, 直到Pi将其分配给j。

可移植性

该解决方案提供了可移植性。它是在用户模式下实现的纯软件机制, 不需要操作系统的任何特殊说明。

严格交替法分析
赞(0)
未经允许不得转载:srcmini » 转可变或严格的交替方式

评论 抢沙发

评论前必须登录!