N 进程 Peterson 算法

2024年8月28日 | 阅读 4 分钟

在本教程中,我们将学习 N 进程彼得森算法。但在了解 N 进程彼得森算法之前,我们应该先了解“什么是彼得森算法?”。彼得森算法和同步是 N 进程彼得森算法的先决条件。那么,现在让我们来学习彼得森算法。

同步

同步是操作系统执行多个操作的过程。但是,这些多个操作共享相同的内存空间。这个过程由操作系统管理。因此,这种不同进程共享相同内存空间的过程称为同步。

在每个操作系统中,不同进程彼此同步运行至关重要。了解哪个进程将被允许执行其关键部分,以及它们可以在何时修改某些关键变量,这在其他进程中至关重要,因为未能这样做会导致不利的后果或结果。

因此,为了实现进程同步,探索并开发了多种策略,其中彼得森算法就是其中之一。最著名的临界区情况之一是生产者-消费者问题。

在这种情况下,不正确的同步实现将导致缓冲区中对象的数量不断减少,从而产生不良结果。

彼得森算法

彼得森算法用于进程同步。这是一个临界区问题。这个问题传统上有一个基于软件的解决方案。它主要用于同步两个进程。

彼得森算法基于这三个条件进行维护和工作。它们是

  1. 在这里,每个进程或作业都以更公平的方式获得自己的轮次。因此,这里保留了有界等待。
  2. 在这里,每个周期只有一个进程执行并进入临界区。因此,由于这个原因,保留了互斥。
  3. 一个处于临界区之外的进程不会阻止其他进程进入临界区,这也能确保进度。

算法

这是 N 进程彼得森算法的先决条件。现在,让我们学习 N 进程彼得森算法。

N 进程彼得森算法

该算法使用相同的进程执行,但存在细微差别。在这里,我们使用一个 N 大小的数组。我们还使用相同的数据结构,但区别在于使用了 N 大小的数组。该算法非常庞大。该算法非常庞大,因为彼得森算法必须访问每个进程并持续引用它们,并引用包含互补进程编号的 Turn 变量。所有这些过程都发生在 while 循环中。这是需要注意的语句。

请参阅此算法以了解 N 进程彼得森算法的工作原理。

算法

说明

考虑一个队列,它将容纳 N 个进程,并且大小为 N。

假设我们创建一个算法,每个进程都会在某个时刻向前推进到队列的前面,此时它们被允许完成其关键任务并继续前进。

每个进程都会在某个时刻向前推进到队列的前面,此时它们被允许完成其关键任务并继续前进。通过这样做,我们可以确保每个进程一旦进入队列并到达终点,都被允许执行其关键部分(前面)。

当时可能存在两种情况,因此进程应该等待直到它到达前面。

要么有些进程在队列中的下一个索引处等待其他人,要么它们可能不等待。

或者如果任何后端进程没有移动到活动进程的位置。

该算法的数据结构与两个进程中的第一个相同,但 Turn 和 Flag 现在都是大小为 N 的数组。

此外,当一些进程完成其临界区后退出队列或进入另一个临界区时,队列的大小可能会逐渐缩小。

从这个解释中,我们可以清楚地理解,上述算法遵守在任何使用操作系统的计算机环境中进行同步和并发进程过程中制定的所有规定。

因此,由于这个原因,我们能够了解这么多关于 N 进程彼得森算法的信息。这就是关于 N 进程彼得森算法的全部内容。这就是这么多进程的同步方式。