인성 좋은 인성이

Dekker 알고리즘 본문

IT공부/운영체제

Dekker 알고리즘

전인성 2018. 9. 28. 16:39

 데커 알고리즘

데커 알고리즘이란?
- 데커 알고리즘은 네덜란드 수학자 Dekker가 상호 베제를 위해서 설계한 상호 베제 알고리즘이다. 

데커 알고리즘.

bloolean flag[2];
int turn;
void P0()
{
while (true){
flag[0] = true;
while (flag[1]) {
if (turn == 1) {
flag[0] = false;
while (turn == 1) /* do nothing */;
flag[0] = true;
}
}
/* critical section */;
turn = 1;
flag[0] = false'
/* remainder */
}
}


void P2()

{

while (true){
flag[1] = true;
while (flag[0]) {
if (turn == 0) {
flag[1] = false;
while (turn == 0) /* do nothing */;
flag[1] = true;
}
}
/* critical section */;
turn = 0;
flag[1] = false
/* remainder */
}
}
void main()
{
flag[0] = false;
flag[1] = false;
turn = 1
parbegin (P0, P1);
}


- Dekker의 알고리즘


데커 알고리즘은 우선 3가지의 변수를 가지고 있다. flag와 turn이다. 각 역할은 이렇다.


turn 

-> 어느 프로세스가 임계 영역(critical section)에 들어가겠다고 요구할 권한이 있는지 알려주는 변수이다.


flag

-> 임계 영역에 들어가있다고 해 주는 변수이다.