CS

상호배제(Mutual Exclusion)

남생이야 2024. 5. 16. 03:04

   상호배제는 공유가 불가능한 자원을 동시에 사용하는 현상을 피하기 위해서 사용하는 알고리즘으로 하나의 프로세스가 작업을 완료되기 전까지 다른 프로세스가 접근을 허용하는 것을 막는 것을 말한다. 

 

임계 구역 

  • 동시에 공유되서는 안되는 자원을 임계 구역(Critical Section)이라고 한다. 
  • 계산이 느리다는 단점이 있으나 높은 정확성을 보장한다. 
  • 데드락 상태를 유발한다는 단점이 있다. 

 

 상호배제 해결 알고리즘으로는 

데커 알고리즘, 피터슨 알고리즘, 베이커리 알고리즘이 있다. 

 

데커 알고리즘 

- 공유 메모리를 사용하여 두 프로세스가 하나의 자원을 혼란없이 사용할 수 있게 하는 알고리즘이며 두 프로세스가 동시에 임계 영역에 진입할려 고 할 때 하나만 들어가도록 하는 기법이다. 한 프로세스가 이미 임계 영역에 있다면 다른 프로세스는 이미 들어간 프로세스의 작업이 마칠 때까지 기다린다. 

 

피터슨 알고리즘 

- 두 개의 프로세스를 기준으로 구현한 알고리즘이며 이전에 진입한 프로세스가 다음에 진입할 프로세스에게 양보를 해주는 알고리즘이다. 

 

베이커리 알고리즘

 - 프로세스 별로 우선순위를 부여해서 각 프로세스별 자기 차례가 오기까지를 기다리게 하는 알고리즘이다. 이 알고리즘에 특징은 프로세스 개수에 제한이 없다.