프로세스/스레드에서 임계 영역(Critical Section)의 동기화 문제를 해결하기 위한 방법 (동기화 작업)이다.
둘의 차이점이라고 한다면 뮤텍스는 하나의 프로세스/스레드만 접근할 수 있도록 하는 것이고,
세마포어의 경우에는 카운터 변수를 공유하면서 접근 할 수 있는 프로세스/스레드를 관리한다는 점
-
뮤텍스 (Mutex)
- 뮤텍스 객체에 한 프로세스/스레드가 접근
- 뮤텍스 객체는 Lock
- Lock된 뮤텍스 객체는 다른 프로세스/스레드가 접근이 불가능함
- 프로세스/스레드가 사용을 다 하면 뮤텍스 객체를 UnLock해서 다른 프로세스/스레드가 사용할 수 있게 함
-
세마포어 (Semaphore)
- 카운터 변수를 두고 있음 ( 1이상)
- 프로세스/스레드가 접근하면 이 카운터 변수를 -1
- 만약 세마포어내에 카운터 변수가 0이 되면 다른 스레드는 접근이 불가능
- 사용중이던 프로세스/스레드가 사용을 다 하면 카운터 변수를 다시 +1 해줌.
이렇게 보듯 뮤텍스 (Mutex)는 세마포어의 한 종류라고 할 수 있다 (Binary Semaphore)