彼得森的解决方案是什么?

彼得森的解决方案确保互斥。它在用户模式下实现,不需要硬件支持,因此可以在任何平台上实现。现在 Peterson 的解决方案使用两个变量:interest 和 Turn 变量。

现在我们将首先看到 Peterson 解算法,然后看看任意两个进程 P 和 Q 如何使用 Peterson 解获得互斥。

#define N 2

#define TRUE 1

#define FALSE 0

int interested[N]=False

int turn;

void Entry_Section(int process)

{

   int other;

   other=1-process

   interested[process]= TRUE ;

   turn = process;

   while(interested[other]==TRUE && Turn=process);

}

void exit_section(int process)

{

   interested[process]=FALSE;

}

解释

会有两个进程,第一个进程的进程号=0,第二个进程的进程号等于1。

因此,如果进程 1 调用 entry_section,则 other = 1-process =1-1=0。

如果进程 0 调用则 other = 1-process = 1-0 = 1

现在,由于调用 entry_section 的进程意味着该进程想要执行临界区,那么该进程将设置 Interest[process]=TRUE

因此,如果进程 1 调用了入口部分,则感兴趣 [1]=TRUE

如果进程 0 被称为入口部分,则interested[0]=TRUE

在宣布该过程很有趣后,它将开始轮到它。因此,如果调用进程 1,则转 =1。

然后,while (interested[other]==TRUE && Turn=process); 将被执行。

在这一行中,进程检查其他进程是否感兴趣。如果该进程感兴趣,则interested[other]==TRUE 将为真,则该进程认为可能发生另一个进程正在执行临界区。

为此,它将进入一个循环,直到另一个进程不感兴趣为止。现在,如果另一个进程感兴趣,则感兴趣[other]==TRUE

它将变为 False 并且该过程将进入临界区。所以,这样一来,只有一个进程可以进入临界区。因此,在 Peterson 的解决方案中保证了互斥。退出临界区过程时会将兴趣设置为 False。

以上是 彼得森的解决方案是什么? 的全部内容, 来源链接: utcz.com/z/331682.html

回到顶部