轮转变量或严格轮换法2025年3月17日 | 阅读 3 分钟 轮转变量或严格轮换法是在用户模式下实现的一种软件机制。它是一种忙等待解决方案,只能用于两个进程。在这种方法中,使用了一个称为“轮转变量”的变量,它实际上是一个锁。 此方法只能用于两个进程。通常,令这两个进程为 Pi 和 Pj。它们共享一个名为 turn variable 的变量。程序的伪代码可以给出如下。 对于进程 Pi 对于进程 Pj 锁变量方法的实际问题在于,进程只有在锁变量为 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。 可移植性该解决方案提供了可移植性。它是一种纯软件机制,在用户模式下实现,不需要操作系统提供任何特殊指令。 ![]() 下一主题感兴趣变量机制 |
Test Set Lock 机制 汇编代码中的修改 在 lock 变量机制中,有时进程会读取 lock 变量的旧值并进入临界区。因此,可能有两个或多个进程进入临界区。然而,在第一部分所示的代码中...
阅读 3 分钟
机制 我们必须确保我们的同步机制能够提供进展。在 turn 变量机制中,由于不希望进入临界区的进程不考虑其他...,因此没有提供进展。
阅读 4 分钟
关于计数信号量的问题 GATE 考试中经常问到计数信号量问题。通常问题非常简单,只包含加法和减法。Wait Decre Down P Signal Inc Up V 以下类型的问题可能会在... 提出。
阅读1分钟
(生产者-消费者问题) 让我们检查基本的 sleep 和 wake 模型。假设我们有两个系统调用:sleep 和 wake。调用 sleep 的进程将被阻塞,而调用 wake 的进程将被唤醒。有一个流行的例子叫做生产者...
阅读 4 分钟
Lock 变量 这是最简单的同步机制。这是一种在用户模式下实现的软件机制。这是一种忙等待解决方案,可用于两个以上的进程。在此机制中,使用了一个 Lock 变量 lock。lock 可以有两种值,...
阅读 3 分钟
或互斥量简介:称为二进制信号量的同步机制的整数值介于 0 和 1 之间。因此,此类信号量提供对临界区的单一访问点。这意味着关键组件仅对一个人可用...
阅读 4 分钟
简介:计数信号量是介于 [0, n] 之间的同步机制,其中 n 是大于一 (1) 的非负整数。通过以这种方式计数信号量,可以提供许多关键组件的访问令牌。这使得多个实体可以访问关键...
阅读 8 分钟
优先级反转 在 TSL 机制中,可能存在优先级反转问题。假设有两个协作进程 P1 和 P2。P1 的优先级为 2,而 P2 的优先级为 1。P1 先到达并被 CPU 调度。由于它...
阅读1分钟
这是一种在用户模式下实现的软件机制。它是一种忙等待解决方案,只能用于两个进程。它使用两个变量:turn 变量和 interested 变量。解决方案的代码如下 # define N 2 # define TRUE...
阅读 3 分钟
在 OS(操作系统)中,临界区是程序中尝试访问共享资源的部分。该资源可以是计算机中的任何资源,如内存位置、数据结构、CPU 或任何 IO 设备。临界区不能由多于... 执行。
阅读 2 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India