彼得森的解决方案是什么?
彼得森的解决方案确保互斥。它在用户模式下实现,不需要硬件支持,因此可以在任何平台上实现。现在 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