본문 바로가기

개발에 도움이 되는/CS

뮤텍스(Mutex)와 세마포어(Semaphore)의 정의

- 임계 구역 (Critical Section) : 여러 Process or Thread가 공유 자원에 접근하는 부분. 그렇기 때문에 이 임계 구역에 여러 Process나 Thread가 한번에 접근할 수 없도록 관리를 해줘야 한다.

 

- 뮤텍스 (Mutex) : 공유 자원에 대한 접근을 동기화하기 위해 사용되는 상호배제 기술.

Locking 메커니즘으로 오직 하나의 Thread만이 동일한 시점에 Lock을 얻어 임계 영역에 들어올 수 있다.

그리고 오직 그 Thread만이 Lock을 반환하여 임계 영역에서 나갈 때(Unlock) 다른 Thread가 접근할 수 있다.

뮤텍스는 오직 1개의 Thread만 접근할 수 있기 때문에 이진 세마포어와 같은 개념이다.

 

 

- 세마포어 (Semaphore) : 공유 자원에 세마포어의 변수만큼의 Thread가 접근 할 수 있음. (변수가 1이면 이진 세마포어)

Thread들은 대기하다가 자원이 사용하지 않는 상태가 되면 즉시 자원을 사용한다.

Signaling 메커니즘이라는 점에서 뮤텍스와 다르다. 세마포어는 Lock을 걸지 않은 Thread도 Signal을 보내 Lock을 해제 할 수 있다.

 

 

반응형