경쟁조건 해결 방안
I. 데이터 정합성 파괴의 요인, 경쟁 조건의 개요
| 항목 | 내용 |
|---|---|
| 경쟁 조건 정의 | 두 개 이상의 프로세스가 공유 자원을 동시에 점유해 작업하다 데이터 일관성을 저해하는 현상 |
| 해결 3대 조건 | 1. 상호 배제 (Mutual Exclusion) 2. 진행 (Progress) 3. 한정 대기 (Bounded Waiting) |
II. 경쟁 조건 해결을 위한 메커니즘 및 기술
가. 임계구역 보호를 위한 동기화 아키텍처
나. 경쟁 조건 해결을 위한 핵심 기술요소
| 분류 | 기술 | 특징 |
|---|---|---|
| 하드웨어 | - Test-and-Set - CAS (Compare-And-Swap) | - 단일 명령어로 원자적 메모리 검사 및 수정 수행 - 논블로킹(Non-blocking) 동기화 메커니즘의 기초 |
| 소프트웨어 | - Peterson’s Algorithm - Dekker’s Algorithm | - 플래그(Flag)와 차례(Turn) 변수를 활용한 상호 배제 - 알고리즘 복잡도가 높고 다중 CPU 환경 적용 난해 |
| OS / 커널 | - Mutex - Semaphore - Monitor | - 소유권 존재 기반 배타 제어 - 시그널/카운터 기반 동기화 제공 - 상호 배제를 언어/객체 수준에서 자동 보장 |
| 최신 기법 | - Lock-free, Wait-free | - 락 획득 없이 원자적 연산을 통한 데이터 일관성 유지 |
- 임계 구역(Critical Section)의 명확한 경계 설정 및 진입 전·후 동기화 상태 확인 필수.
III. 해결 방안별 특성 비교 및 최신 기술 동향
가. Mutex vs Semaphore vs Monitor
| 항목 | 뮤텍스 (Mutex) | 세마포어 (Semaphore) | 모니터 (Monitor) |
|---|---|---|---|
| 제어 주체 | 소유주 (Process/Thread) | 시스템 (OS 커널) | 컴파일러 |
| 자원 개수 | 1개 (Binary) | 1개 이상 (Counting) | 1개 (객체 단위 배타 락) |
| 특징 | 락 소유권 엄격 (획득한 자만 해제 가능) | 시그널 전달(Signal/Wait), 소유권 부재 | 높은 가독성 및 캡슐화 지원 |
| 용도 | 단일 공유 자원 보호 | 생산자-소비자 문제 해결, 동시 접근 병목 제어 | 고수준 동기화 라이브러리 (Java synchronized 등) |
- 최근에는 메모리 안전성(Memory Safety)을 언어 차원에서 강제하는 프로그래밍 언어(Rust 등) 도입 및 eBPF 기반 동적 락 경합 분석 도구를 적용하는 추세임.