자 여기 counter 변수를 1 증가시켜야 하는 생산자 프로세스와, counter 변수를 1 감소시켜야 하는 소비자 프로세스가 있다고 해보자. 만약 이 두 프로세스가 counter변수에 동시에 접근하여 조작을 한다면 의도했던 실행결과가 보장되지 않는다. 실행 결과가 자원에 접근이 발생한 특정 순서에 의존하기 때문이다. 이러한 상황을 경쟁상황(race condition)이라고 한다. 따라서 일관적인 실행결과를 보장하기 위해서는 변수에 대해 하나의 프로세스만 접근할 수 있도록, 프로세스를 동기화할 필요가 있다. 임계영역 문제 프로세스들이 임계영역을 포함하고 있는 코드로 작성되어있는 시스템을 생각해보자. 프로세스는 아래와 같은 구조를 가지고 있을 것이다. do{ 진입 영역 // 임계 영역으로 들어가기 위한 ..