什么是Peterson解法?
Peterson解法确保了互斥。它在用户模式下实现,不需要任何硬件支持,因此可以在任何平台上实现。Peterson解法使用两个变量:`interested`和`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-进程 = 1-1 = 0。
如果进程0调用,则`other` = 1-进程 = 1-0 = 1
现在,由于调用了`entry_section`的进程意味着该进程想要执行临界区,则该进程将设置`interested[process]=TRUE`。
因此,如果进程1调用`entry_section`,则`interested[1]=TRUE`。
如果进程0调用`entry_section`,则`interested[0]=TRUE`。
声明进程感兴趣后,它将设置其`turn`。因此,如果调用进程1,则`turn = 1`。
然后,将执行`while (interested[other]==TRUE && Turn==process);`。
在这行代码中,进程检查其他进程是否感兴趣。如果该进程感兴趣,则`interested[other]==TRUE`将为真,然后进程认为另一个进程可能正在执行临界区。
为此,它将进入循环,直到另一个进程不再感兴趣。现在,如果另一个进程变得感兴趣,则`interested[other]==TRUE`
将变为假,并且进程将进入临界区。因此,通过这种方式,只有一个进程可以进入临界区。因此,在Peterson解法中保证了互斥。退出临界区时,进程将`interest`设置为False。
数据结构
网络
关系数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP