임계 구역 문제

임계 구역 문제란 임계 구역으로 지정되어야 할 코드 영역이 임계 구역으로 지정되지 않았을 때 발생할 수 있는 문제를 말한다.

관련 문제 
 입출금 문제
 생산자-소비자 문제
 독자-저자 문제

해결 조건 
임계 구역 문제를 해결하기 위해서는 다음 3가지 조건을 충족해야 한다.
 상호 배제(Mutual exclusion) : 하나의 프로세스가 임계 구역에 들어가 있다면 다른 프로세스는 들어갈 수 없어야 한다.
 진행(Progress) : 임계 구역에 들어간 프로세스가 없는 상태에서, 들어가려고 하는 프로세스가 여러 개 있다면 어느 것이 들어갈지를 적절히 결정해주어야 한다.
 한정 대기(Bounded waiting) : 다른 프로세스의 기아(Starvation)를 방지하기 위해, 한 번 임계 구역에 들어간 프로세스는 다음 번 임계 구역에 들어갈 때 제한을 두어야 한다.

해결 방법

소프트웨어적인 방법 
 2개의 프로세스에 대한 방법
 피터슨의 알고리즘
 2개 이상 프로세스에 대한 방법

하드웨어 활용 방법 
하드웨어를 활용하면 좀 더 간단하게 문제를 해결할 수 있다.
 동기화 명령어 : CPU가 지원하는 동기화 명령어를 활용하는 방법이다. 이들 명령어는 원자적으로 수행된다. 이를 사용하면 상호 배제 조건을 쉽게 충족시킬 수 있지만, 한정 대기 조건은 주어진 문제마다 차이가 있기 때문에 사용자 프로그램에서 처리해야 한다. 
 Test-and-Set
 Swap
 세마포어
 모니터

같이 보기 
 임계 구역

동시성 제어