[Computer Science]/[운영체제(OS)]

[운영체제(OS)] 6-1) 프로세스 동기화 - 임계구역(Critical-Section)

극꼼 2023. 2. 7. 22:00
반응형


* 데이터 정합성 이슈 : 동시에 공유 데이터에 접근하면 데이터 불일치가 발생합니다. 데이터 일관성을 유지하려면 협력 프로세스간의 순차적인 실행을 보장하는 매커니즘이 필요합니다. 

 

* 무한 버퍼 : 버퍼의 크기에 실질적인 한계가 없음

* 유한 버퍼 : 버퍼의 크기가 고정되어 있음. 버퍼가 비어있으면 소비자는 대기해야하고, 모든 버퍼가 차있으면 생산자가 대기해야 함.

 

* 경쟁 상황 : 여러 프로세스 중 누가 먼저 공유 데이터에 접근하는지.


<임계구역(Critical-Section)>

: 하나의 프로세스가 접근 중일 때 다른 프로세스가 접근할 수 없는 코드 segment. 각 프로세스에는 임계 구역이라고 하는 부분이 존재하며, 일반적으로 entry section ~ critical section ~ exit section, remainder section으로 구성됩니다.

 

* entry section : 프로세스들이 진입 허가를 요청하는 구역.


<임계구역 요구 사항>

1. 상호 배제(Mutual Exclusion) : 하나의 프로세스가 임계구역에서 실행될 때 다른 프로세스는 이에 접근할 수 없음.

2. 진행 (Progress) : 임계구역에서 실행중인 프로세스가 없고, 임계 구역에 들어가고자 하는 프로세스가 있다면, 나머지 구역(remainder section)에서 실행중이지 않아야 임계 구역에 진입 경쟁에 참여할 수 있음. 또, 이 선택을 무한정 연기할 수 없음.

3. 제한이 있는 대기 시간 (Bounded Waiting) : 프로세스가 임계구역에 진입 요청을 한 후부터, 그 요청이 허용될 때까지 다른 프로세스들이 해당 임계구역에 진입하도록 허용하는 횟수에 한계가 있음.

 

-> 피터슨의 해결안

: 두 개의 프로세스(Pi, Pj가 있다고 전제)가 두 개의 데이터 항목을 공유하도록 함.

1. int turn : 임계구역으로 진입할 순번 표시

2. boolean flag : 임계구역 진입 준비 여부

프로세서 Pi의 구조

피터슨의 해결안은 임계구역 요구사항을 충족시켜주지만, 프로세스가 2개일 때만 적용이 가능하며, while문 안에서 CPU를 계속 사용하여(busy waiting) 자원 낭비인 단점이 있습니다. 

 

 

반응형