본문 바로가기
컴퓨터공학

상호 배제 알고리즘 - Dekker 알고리즘

by 무에서 2017. 9. 19.
반응형

최초의 상호 배제 (Mutual Exclusion)) 알고리즘인 Dekker 알고리즘은 다음과 같다.


 Process#1

 Process#2


  Flag1 = true;

  while(Flag2)

  {

    if(turn!=0)

    {

      Flag1 = false;

      while(turn!=0)

      {

         // busy wait

      }

      Flag1 = true;

    }

  }


  // Start of Critical Section

  ...

  ...


  turn = 1;

  Flag1 = false;

  // End of Critical Section


   Flag2 = true;

  while(Flag1)

  {

    if(turn!=1)

    {

      Flag2 = false;

      while(turn!=1)

      {

         // busy wait

      }

      Flag2 = true;

    }

  }


  // Start of Critical Section

  ...

  ...


  turn = 0;

  Flag2 = false;

  // End of Critical Section


프로세스가 동시에 Flag1과 Flag2를 true로 할 때 임계 영역(Critical Section)을  마지막으로 실행한 프로세스가 아닌 다른 프로세스가 임계 영역을 먼저 실행한다.


Dekker 알고리즘은 하드웨어 지원 없이 소프트웨어만으로 간단하게 상호 배제를 구현할 수 있다.


하지만, Dekker 알고리즘은 2개의 프로세스에서만 사용할 수 있고 Busy Wait이 있는 단점이 있다.


Peterson 알고리즘이 좀 더 간단하다.




반응형

댓글