Knowledge/이론

뮤텍스와 세마포어

똑똑한망치 2024. 1. 23. 14:30
728x90
반응형

1. 뮤텍스 (Mutex)


  • 공유된 자원의 데이터 또는 임계영역(Critical Section)에 하나의 Process 또는 Thread만 접근하도록 하는 기술
    • 즉, 잠금(Lock) 하는 것
    • 동기화 대상이 하나
  • 임계구역(Critical Section)을 가진 스레드들의 실행시간(Running Time)이 서로 겹치지 않고 각각 단독으로 실행되도록 하는 기술
  • 한 프로세스 또는 스레드에 의해 소유될 수 있는 Key를 기반으로 한 상호배제 기법

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

 

2. 세마포어 (Semaphore)


  • 현재 공유자원에 접근할 수 있는 프로세스(스레드)의 수를 나타내는 하나의 값을 이용하여 상호배제를 달성하는 기법
  • Counter을 두어 동시에 리소스에 접근할 수 있는 허용 가능한 스레드 수를 제어한다.

 

 

 

 

 

 

 


 

 

 

 

 

3. 뮤텍스와 세마포어의 차이점


  • Mutex는 동기화 대상이 오직 1개일 때 사용, Semaphore는 동기화 대상이 1개 이상일 때 사용한다.
  • Mutex는 자원을 소유할 수 있고 책임을 가지는 반면, Semephore는 자원 소유가 불가능하다.
  • Mutex는 상태가 0, 1 뿐이므로 Lock을 가질 수 있고, 소유하고 있는 스레드만이 이 Mutex를 해제할 수 있다. 반면, Semaphore는 Semaphore를 소유하지 않는 스레드가 Semaphore를 해제할 수 있다.
반응형