키워드 : 뮤텍스, 세마포어, 임계영역
시스템 안에서 프로세스, 스레드가 함께 접근 할 수 있는 자원이나 변수 등을 의미한다.
공유자원을 두 개 이상의 프로세스가 동시에 읽거나 쓰는 상황을 경쟁 상태라고 한다.
공유 자원에 접근할 때 순서 등의 이유로 결과가 달라지는 영역을 임계 영역이라고 한다.
이 영역을 해결하기 위한 방법으로 뮤텍스,세마포어, 모니터 세 가지가 있다. 이 방법들은 모두 상호배제, 한정 대기, 융통성이라는 조건을 만족한다. 세 방법의 토대는 lock이다.
한 프로세스에 의해 소유될 수 있는 key를 기반으로 한 상호배제 기법이고 key에 해당하는 어떤 객체가 있고 이 객체를 소유한 스레드나 프로세스만이 공유자원에 접근할 수 있다.
동기화 대상이 하나이며 락을 사용해서 두 스레드가 동시에 접근 할 수 없게 한다.
wait()
자신의 차례가 올 떄까지 기다리는 함수signal()
다음 프로세스로 순서를 넘겨주는 함수공유된 자원의 데이터 혹은 임계영역 등에 여러 Process 혹은 Thread가 접근하는 것을 막아준다.
공통으로 관리하는 하나의 값을 이용합니다.
동기화 대상이 하나 이상이다.
동기화 방법
동기화 대상의 갯수
스터디에서 받은 질문 정리
Q .Binary semaphore와 Mutex를 동일하게 볼 수 있나요?
A .binary semaphore는 0과 1의 두 가지 값만 가질 수 있는 세마포어입니다.
구현의 측면에서 보면, 둘이 유사하기 때문에 뮤텍스는 바이너리 세마포어라고 할 수 있습니다.
하지만, 메커니즘 측면에서 보면, 동일하게 보기는 어렵습니다.
뮤텍스는 잠금 메커니즘 (리소스에 대한 접근을 동기화하는 데 사용되는 메커니즘)
세마포어는 신호 메커니즘 (신호를 기반으로 상호 배제가 일어나는 메커니즘)