뮤텍스(Mutex)와 세마포어(Semaphore)
임계 구역과 관련해 여러 스레드 또는 프로세스들이 한번에 접근하는것을 막는 상호배제 기법이다.
임계 구역 (Critical Section)
뮤텍스 (Mutex)
하나의 스레드 또는 프로세스에 의해 소유될 수 있는 Key를 기반으로 한 상호배제기법
- 하나의 스레드 또는 하나의 프로세스가 접근
- 뮤텍스 객체는 Lock
- Lock된 객체는 다른 스레드 또는 다른 프로세스가 접근 불가능
- 사용을 다 하면 뮤텍스 객체를 Unlock해서 다른 스레드 또는 다른 프로세스가 접근
세마포어 (Semaphore)
현재 공유자원에 접근할 수 있는 스레드 또는 프로세스의 수를 나타내는 카운터 변수를 공유하면서 상호배제를 달성하는 기법
- 카운터 변수를 두고 있음
- 스레드가 접근하면 이 카운터 변수를 -1
- 만일 카운터 변수가 0이 되면 다른 스레드는 접근 불가능 (Lock)
- 스레드가 사용을 다 하면 카운터 변수를 +1