操作系统 轮换变量或严格轮换方法

操作系统 轮换变量或严格轮换方法

轮换变量或严格轮换方法是在用户模式下实现的软件机制。这是一种忙等待的解决方案,只能用于两个进程。在这种方法中,使用一个被称为轮换变量的变量来实际上是一个锁。

这种方法只能用于两个进程。一般来说,让这两个进程分别为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可用并且希望进入临界区。

操作系统 轮换变量或严格轮换方法

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

操作系统 轮换变量或严格轮换方法

Pi完成其临界区,并将j分配给turn变量。 Pj将有机会进入临界区。在Pj完成其临界区之前,turn的值保持为j。

操作系统 轮换变量或严格轮换方法

严格轮换方法的分析

让我们根据四个要求来分析严格交替方法。

互斥性

严格交替方法在每种情况下都提供互斥性。该过程仅适用于两个进程。伪代码对于这两个进程是不同的。只有当进程看到转变变量等于其进程ID时,进程才能进入。因此,无论轮到哪个进程,都不能进入临界区。

进展性

在这种机制中,并不保证进展性。如果Pi不想在轮到它进入临界区时进入,那么Pj将被无限期地阻塞。Pj必须等待很长时间才能轮到它,因为在Pi将其分配给j之前,转变变量将保持为0。

可移植性

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

操作系统 轮换变量或严格轮换方法

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程