1) 임계 구역 (Critical section)
- 적어도 하나 이상의 다른 프로세스와 공유하는 데이터에 접근하고 갱신할 수 있는 영역
- 임계 구역 문제 : 프로세스들이 데이터를 협력적으로 공유하기 위해 자신의 활동을 동기화 할 때
사용할 수 있는 프로토콜을 만드는 것이다.
- 진입 구역(Entry section) : 임계구역에 진입할 수 있는 구역
- 퇴출 구역(Exit section) : 임계구역에서 벗어나도록 하는 구역
- 나머지 구역(Remainder section) : 위의 세 구역을 제외한 나머지 구역
while(true){
entry section
critical section
exit section
remainder section
}
- 임계구역 문제 해결방안 조건
- 상호 배제 : 하나의 프로세스가 실행되면 다른 프로세스는 임계 구역에서 실행 불가능
- 진행 : 자기의 임계 구역에 자신의 프로세스가 수행중이지 않고, 나머지 구역을 실행중이지 않는 다른 프로세스들만이 다음에 진입할 수 있다. 이 때 연기는 무한정 되지 않는다.
- 한정된 대기 : 프로세스가 자기의 임계구역에 진입하려는 요청을 한 후부터 그 요청이 허용될 때까지 다른프로세스들이 그들 자신의 임계구역에 진입하도록 허용되는 횟수에 한계가 있어야한다.
- 선점형 커널과 비선점형 커널
- 선점형 커널 : 프로세스가 커널에서 수행되는 동안 선점되는 것을 허용하는 것
- 비선점형 커널 : 프로세스가 커널에서 수행되는 동안 선점되는 것을 허용하지 않는 것
- 커널 모드의 프로세스가 대기 중인 프로세스에 처리기를 양도하기 전에 오랫동안 실행할 위험이 적어
응답이 더 민첩하기에 보통은 선점형 커널을 선호한다.