서로 다른 두 프로세스가 동시에 공유 자원을 쓰지 않도록 하는 기법
공유 자원을 Critical Section (임계구역) 이라고 하며 각 프로세스의 사용자 모드에서는 로컬 메모리를 가지므로 Critical Section이 따로 존재하지 않는다.
그러나 커널 모드 안에서는 각 프로세스가 같은 메모리 공간을 공유할 수 있으므로 Critical Section이 존재한다.
Mutual Exclusion 은 같은 시간에 임계구역에 접근하는 프로세스를 하나로 제한한다.
예전 UNIX 에서는 Mutual Exclusion을 위해 커널 모드에서는 문맥교환이 일어나지 않도록 하였다.
이때 전역 변수에 대해서는 Count
변수나 Lock
을 두어 Critical Section의 자원을 이용하고 있는지를 검사한 후에 이용하는 프로세스가 없다면 접근하도록 한다.
Count
는 Ciritical Section이 하나만 있는 것이 아니고 프로세스가 다수의 Critical Section에 접근한다고 했을때, Count
를 더해준다.
Count
가 0이 되었을 때가 더 이상 Critical Section에 접근하지 않는다는 의미이므로 Lock
을 해제한다.
현대에는 Mutex Lock, Spin Lock, Semaphore 등을 활용하여 Critical Section에 접근하는 것을 제한한다.