다중프로그래밍으로 여러 작업을 동시에 실행가능한 환경이 됐다. 이러한 환경은 탁월한 성능 및 메모리를 자랑한다. 하지만, 그에 대한 대가로 공유자원을 여러 프로세스, 혹은 스레드에서 사용하게 되어 데드락(교착 상태)이 자주 발생하게 되는`동기화 문제`가 자주 발생하게 된다. OS에서의 데드락을 발생시키는 원인은 상호배제, 점유대기, 비선점, 순환대기가 있는데, 이 4가지가 모두 지켜지지 않으면 데드락이 발생한다. 이번에 포스팅할 뮤텍스, 스핀락, 세마포어 방식은 위 4가지 조건 중 상호배제를 준수하여 데드락이 발생되지 않도록 하는 방법이다. 뮤텍스(Mutex) 정의 자체는 여러 스레드를 실행하는 환경에서 자원 접근에 대한 제한을 위한 메커니즘이다. 하지만 이 정의로는 완벽하게 이해하기 어렵다. 아래 그림..