Paterson 解决方案2025年3月17日 | 阅读 3 分钟 这是一种在用户模式下实现的软件机制。它是一种忙等待解决方案,只能用于两个进程。它使用两个变量:turn 变量和 interested 变量。 解决方案的代码如下所示 到目前为止,我们的每个解决方案都受到一个或另一个问题的困扰。然而,Peterson 解决方案为您提供了所有必要的必要条件,如互斥、进展、有界等待和可移植性。 Peterson 解决方案分析这是一个两进程解决方案。让我们考虑两个协作进程 P1 和 P2。入口段和出口段如下所示。最初,interested 变量和 turn 变量的值为 0。 最初,进程 P1 到达并希望进入临界区。它将自己的 interested 变量设置为 True(第 3 行)并将 turn 设置为 1(第 4 行)。由于 P1 完全满足第 5 行给出的条件,因此它将进入临界区。 同时,进程 P1 被抢占,进程 P2 被调度。P2 也想进入临界区,并执行入口段的指令 1、2、3 和 4。在指令 5 上,它被卡住了,因为它不满足条件(其他 interested 变量的值仍然为 true)。因此,它陷入了忙等待。 P1 再次被调度,并通过执行指令 6(将 interested 变量设置为 false)完成临界区。现在如果 P2 检查,它将满足条件,因为其他进程的 interested 变量已变为 false。P2 也将进入临界区。 任何一个进程都可以进入临界区任意次数。因此,该过程按循环顺序发生。 互斥该方法肯定会提供互斥。在入口段,while 条件涉及两个变量的条件,因此进程无法在另一个进程感兴趣并且进程是最后一个更新 turn 变量的条件之前进入临界区。 进度一个不感兴趣的进程永远不会阻止另一个感兴趣的进程进入临界区。如果另一个进程也感兴趣,那么进程将会等待。 有界等待interested 变量机制之所以失败,是因为它没有提供有界等待。然而,在 Peterson 解决方案中,死锁永远不会发生,因为首先设置 turn 变量的进程肯定会进入临界区。因此,如果一个进程在执行入口段的第 4 行后被抢占,它将在下一次机会时肯定进入临界区。 可移植性这是完整的软件解决方案,因此可以在所有硬件上移植。 ![]() 下一主题无忙等待的同步机制 |
优先级反转 在 TSL 机制中,可能存在优先级反转问题。假设有两个协作进程 P1 和 P2。P1 的优先级为 2,而 P2 的优先级为 1。P1 先到达并被 CPU 调度。由于它...
阅读1分钟
机制 我们必须确保我们的同步机制能够提供进展。在 turn 变量机制中,由于不希望进入临界区的进程不考虑其他...,因此没有提供进展。
阅读 4 分钟
Test Set Lock 机制 汇编代码中的修改 在 lock 变量机制中,有时进程会读取 lock 变量的旧值并进入临界区。因此,可能有两个或多个进程进入临界区。然而,在第一部分所示的代码中...
阅读 3 分钟
在 OS(操作系统)中,临界区是程序中尝试访问共享资源的部分。该资源可以是计算机中的任何资源,如内存位置、数据结构、CPU 或任何 IO 设备。临界区不能由多于... 执行。
阅读 2 分钟
(生产者-消费者问题) 让我们检查基本的 sleep 和 wake 模型。假设我们有两个系统调用:sleep 和 wake。调用 sleep 的进程将被阻塞,而调用 wake 的进程将被唤醒。有一个流行的例子叫做生产者...
阅读 4 分钟
或互斥量简介:称为二进制信号量的同步机制的整数值介于 0 和 1 之间。因此,此类信号量提供对临界区的单一访问点。这意味着关键组件仅对一个人可用...
阅读 4 分钟
或 Strict Alternation Approach 或 Strict Alternation Approach 是在用户模式下实现的软件机制。它是一种忙等待解决方案,只能用于两个进程。在此方法中,使用了一个 turn 变量,它实际上是一个锁。此方法可以...
阅读 2 分钟
Lock 变量 这是最简单的同步机制。这是一种在用户模式下实现的软件机制。这是一种忙等待解决方案,可用于两个以上的进程。在此机制中,使用了一个 Lock 变量 lock。lock 可以有两种值,...
阅读 3 分钟
无忙等待的同步机制 我们到目前为止看到的所有解决方案都旨在通过忙等待提供互斥。然而,忙等待不是最优的资源分配,因为它会一直占用 CPU 来持续检查 while 循环条件...
阅读1分钟
(操作系统)当两个或多个进程相互协作时,它们的执行顺序必须得到保证,否则它们的执行可能发生冲突,并可能产生不适当的输出。协作进程是指可以影响其他进程执行的进程...
阅读1分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India