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