여러 프로세스가 데이터를 공유하며 수행될 때, 각 프로세스에서 공유 데이터를 접근하는 프로그램 코드 블럭을 임계 영역이라고 한다. 즉, 여러 프로세스가 동일 자원을 동시에 참조하여 값(공유하는 변수명, 파일 등)이 오염될 위험 가능성이 있는 영역이다. 프로그래밍시에 성능 향상을 위해서 임계영역을 최소화하는 설계를 해야 한다.
동시 프로그래밍에서 공유 불가능한 자원의 동시 사용을 피하기 위해 사용하는 알고리즘이다. 뮤텍스는 Key에 해당하는 어떤 Object가 있으며 이 Object를 소유한 스레드 또는 프로세스만이 공유 자원에 접근할 수 있다. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 동기화 또는 락을 사용한다. 즉, 뮤텍스 객체를 두 스레드가 동시에 사용할 수 없다는 것이다.
멀티 프로그래밍 환경에서 공유된 자원에 대한 접근을 제한하는 방법이다. 공유 리소스에 접근할 수 있는 최대 허용치만큼 동시 사용자인 스레드나 프로세스의 접근을 허용하게 한다.
https://chelseashin.tistory.com/40
https://incheol-jung.gitbook.io/docs/q-and-a/computer-science/undefined-1
https://velog.io/@heetaeheo/%EB%AE%A4%ED%85%8D%EC%8A%A4Mutex%EC%99%80-%EC%84%B8%EB%A7%88%ED%8F%AC%EC%96%B4Semaphore%EC%9D%98-%EC%B0%A8%EC%9D%B4
https://mangkyu.tistory.com/104