题39

题目

Q:两个进程 互斥的 Peterson 算法描述如下:

// 进程 P0
flag[0] = 1;
(1);
while (flag[1] && turn == 1);
临界区;
flag[0] = 0;
其余代码;
 
// 进程 P1
flag[1] = 1;
(2);
while (flag[0] && turn == 0);
临界区;
flag[1] = 0;
找余代码;

其中, (1) 和 (2) 处的代码分别为 ( ) 。
A. turn , turn
B. turn , turn
C. turn , turn
D. turn , turn

分析

A:Peterson算法既解决了互斥问题,又解决了饥饿问题,饥饿是指有些进程可能永远得不到执行的机会。
Peterson算法的关键是两个进程共享两个变量,一个是 flag 数组,另一个是 turn 变量。
其中flag表示的所谓的谦让,turn表示的谁的回合

C
根据 Peterson 算法的原理,可知(1)和(2)处分别为 turn 和 turn