실행되는 여러 프로세스들은 서로 영향을 끼친다. 프로세스 동기화란 프로세스들 간의 실행 순서를 맞추는 행위이다.
프로세스 동기화에는 실행순서제어와 상호배제가 있다.
실행순서제어의 예로는 읽기 쓰기를 볼 수 있다. 읽기는 쓰기 다음에 실행되어야 쓴 내용을 읽을 수 있다.
만약 순서가 뒤집어지면 읽었을 때 아무것도 없는 데이터를 보게 된다.
어떠한 결과를 도출하기 위해 여러 작업이 있을 때 작업간의 선후행 관계에 맞게 실행이 되어야 원하는 결과를 도출 할 수 있다. 상호배제의 간단한 예는 예금잔액이 있다. 현재잔액에 금액을 더하는 프로세스가 두 개 있다고 생각하면
한 번에 하나의 프로세스가 수행, 종료 되어야 최종 금액이 제대로 계산된다. 만약 하나의 프로세스가 수행중에 다른 프로세스가 끼어들어 더하기 연산을 수행한다면 끼어든 프로세스의 초기값은 먼저 수행된 프로세스의 결과를 반영하지 못하게 되어 두 개의 연산결괏값에 오류가 발생한다.
즉 다음과 같은 현상이 일어난다.
초기값=100원 , A연산 +100원 , B연산 +200원
일 때 A연산이 진행되는 동안 결괏값은 아직 100원이다. 이때 B연산이 끼어든다면 B연산의 초기값은 100원인 상태가 된다. A연산이 끝났을 때 결괏값은 200원이 되는데 B연산이 직후에 종료된다면 결괏값은 B연산의 초기값 100원+200원이 되어 300원이 된다. 기대한 결괏값은 400원인데 오류가 발생한 것이다.
이러한 오류를 방지하기 위해서 초기값에 동시에 접근하지 못하게 막아야 한다. 즉 초기값에 대한 A연산이 완료된 후에 B연산이 접근하도록 차단해야 한다. 이런 접근차단을 상호배제라고 한다.
또한 전역변수와 같이 여러 프로세스들이 함께 사용하는 자원을 공유자원이라고(Shared Resource) 하며, 이 중 동시에 접근하면 안되는 자원영역을 임계구역이라고 한다.(Critical Section)
임계구역에 동시에 여러 프로세스가 접근하는 상태를 경쟁상태(Race Condition)이라고 한다.
Race Condition의 결과 위의 오류발생 예시와 같이 데이터의 일관성이 깨지는 문제가 발생한다.
운영체제는 임계구역 문제를 해결하기 위해 3가지 원칙을 지킨다.
1. 상호배제(Mutual Exclusion) : 한 프로세스가 임계구역에 진입한 상태에서 다른 프로세스는 임계구역에 접근통제한다.
2. 진행(Progress) : 임계구역에 어떤 프로세스도 진입하지 않은 상태라면 임계구역에 진입하고자 하는 프로세스가 진입가능해야 한다.
3. 유한대기(Bounded Waiting) : 임계구역에 진입하고자 하는 프로세스가 있다면 그 프로세스틑 언젠가는 입계구역에 들어갈 수 있어야 한다. 무한대기를 하면 안된다.
'IT정보&정보처리기사' 카테고리의 다른 글
| 교착상태 (0) | 2024.01.17 |
|---|---|
| 프로세스 동기화 방법 (2) | 2024.01.14 |
| CPU 스케줄링 (0) | 2024.01.13 |
| 프로세스와 스레드 (0) | 2024.01.12 |
| RAM(Random Access Memory) (0) | 2024.01.07 |