프로세스 동기화
영화 좌석을 예매할 때 하나의 좌석에 동시에 여러 사람이 접근할 수도 있다.
이 때, 좌석에 대해 동기화 문제가 해결되지 않는다면, 한 좌석을 여러사람이 예매하는 문제가 발생할 것이다.
프로세스 동기화는 여러 개의 프로세스(스레드)가 컴퓨터 내의 공유된 리소스에 접근하는 경우에 데이터의 일관성을 유지하기 위한 방식을 의미한다.
경쟁 상태 (Race Condition)과 임계 영역(Critical Section)
은행을 예시로 생각해보자.
은행에서 하나의 계좌에는 입금과 출금을 할 수 있다. 만약 동시에 하나의 계좌에서 입금과 출금이 동시에 이뤄진다면 어떻게 될까 ?
현재 Zayson의 통장에는 잔고가 1000원 남아있다.
Process A가 1000원을 입금했다.
동시에 Process B가 500원을 출금했다.
잔고 : 500원
Zayson : 잔고가 왜 이러지?!?!
우리는 잔고가 1500원이 될 것이라고 예상했다. 하지만 계좌에 동시에 입금, 출금이 이뤄지면서 가장 마지막에 실행된 Process B의 결과로 계좌 잔고가 결정되었다.
여기서 계좌는 공유되는 리소스이다.
이렇게 공유되는 리소스에 여러 개의 프로세스가 동시에 접근하고 경쟁을 하면서 결과값을 예측할 수 없는 상태를 경쟁 상태(Race Condition)이라고 한다.
그리고 프로세스가 공유되는 리소스에 접근하고 데이터를 변경하는 영역을 임계 영역 (Critical Section)이라고 한다.
위의 은행 예제에서는 입금과 출금을 통해 프로세스가 공유된 리소스에 접근하기 때문에 임계 영역은 입금과 출금이라고 할 수 있다.
임계 영역의 해결조건 3가지
임계 영역을 해결하기 위해선 3가지의 조건이 모두 충족되어야 한다.
- Mutual Exclusion (상호 배제)
- 만약 하나의 프로세스가 임계 영역에서 실행되고 있다면, 어떤 프로세스도 임계 영역에서 실행될 수 없는 것을 의미한다.
- 즉, 임계 영역에는 반드시 하나의 프로세스만 들어가 실행되야 한다.
- Progress (진행)
- 임계 영역에서 어떤 프로세스도 실행되고 있지 않고, 해당 임계 영역에 들어가기 위해 대기하는 프로세스가 존재한다면 반드시 대기하는 프로세스를 임계 영역에 넣어줘야한다.
- 즉, 경쟁하는 프로세스가 없다면 즉시 임계 영역으로 들어가 실행되어야 한다.
- Bounded Waiting (유한한 대기)
- 대기하고 있는 프로세스가 임계 영역에 들어가고자 요청했다면, 언젠가는 경쟁 상태에서 이겨 임계 영역에 들어가 실행되어야 한다.
- 즉, 대기하는 프로세스는 무한히 대기하지 않고 언젠가는 들어가서 실행되어야 한다.
📄 References
Operation System Concepts - 9th Edition
반응형
'Computer Science > OS' 카테고리의 다른 글
뮤텍스(Mutex), 세마포어(Semaphore) (0) | 2022.07.03 |
---|---|
동기와 비동기, 블로킹과 논블로킹 (0) | 2022.06.12 |
프로세스, 스레드 (0) | 2022.06.07 |