12-1. 동기화란
동기화의 의미
동기화 Synchronization
- 프로세스들은 서로 협력하여 실행되며, 실행 순서와 자원의 일관성을 보장해야 한다.
- 프로세스의 올바른 실행을 위해 동시에 접근하면 안되는 자원에 하나의 프로세스만 접근하게 하고, 올바른 순서대로 프로세스를 실행하는 것을 의미
- 실행 순서 제어를 위한 동기화
- 상호 배제를 위한 동기화
공유 자원과 임계 구역
- 공유 자원
- Shared Resource
- 프로세스들이 공통으로 사용하는 자원
- 전역 변수, 파일, 입출력장치, 보조기억장치 등도 공유 자원으로 볼 수 있음
- 임계 구역
- Critical Section
- 동시에 실행하면 문제가 발생하는 자원에 접근하는 코드 영역
- 2개 이상의 프로세스가 임계 구역에 접근하려하면, 먼저 접근한 프로세스가 작업이 마무리 될 때까지 다른 프로세스들은 대기해야 함
- 레이스 컨디션
- Race Condition
- 잘못된 실행으로 여러 프로세스가 임계 구역 코드를 실행하여 발생하는 문제
- 데이터의 일관성이 깨지는 문제 발생
12-2. 동기화 기법
동기화를 위한 도구들
뮤텍스 락
Mutex lock; Mutual Exclusion Lock
하나의 공유 자원에 접근하는 프로세스를 가정한 방식