프로세스 동기화
멀티 프로세스 환경에서 공유 자원의 일관성을 보장하기 하는 방법
임계구역
- 공유 자원 접근 순서에 따라 결과가 달라질 수 있는 코드
프로세스 동기화를 위한 기법 3가지
- 상호배제
- 진행
- 한정된 대기
상호배제 기법
뮤텍스
- 락킹 알고리즘
- 임계구역에 들어간 프로세스가 반드시 풀고 나와야 함 (소유권 개념 — 잠근 스레드만 해제 가능)
- 스핀락 오버헤드가 큼
- 스핀락: 반복문을 돌면서 임계구역 진입이 가능한지 계속 확인하는 작업
세마포어
- 시그널링 알고리즘
- 잠그지 않은 다른 프로세스가 락킹을 해제할 수 있다 (소유권 없음)
- 이진 세마포어(Binary Semaphore): 값이 0 또는 1만 가능
- 카운팅 세마포어(Counting Semaphore): 동시 접근 허용 수를 제어 (값이 N이면 N개까지 동시 접근)
면접 빈출: 뮤텍스 vs 이진 세마포어
| 구분 |
뮤텍스 |
이진 세마포어 |
| 소유권 |
있음 (잠근 스레드만 해제) |
없음 (다른 스레드도 signal 가능) |
| 목적 |
상호 배제 |
동기화/시그널링 |
| Priority Inheritance |
지원 |
미지원 |