경쟁조건 해결 방안

I. 데이터 정합성 파괴의 요인, 경쟁 조건의 개요

항목내용
경쟁 조건 정의두 개 이상의 프로세스가 공유 자원을 동시에 점유해 작업하다 데이터 일관성을 저해하는 현상
해결 3대 조건1. 상호 배제 (Mutual Exclusion)
2. 진행 (Progress)
3. 한정 대기 (Bounded Waiting)

II. 경쟁 조건 해결을 위한 메커니즘 및 기술

가. 임계구역 보호를 위한 동기화 아키텍처

[ Thread A ] [ Shared Resource ] [ Thread B ]

Entry Section Critical Section Exit Section Remainder Section Lock Occupied Data Access Lock: Available Wakeup Thread B Entry Section Critical Section * 공유 자원에 임계구역을 설정하고, 진입 전과 탈출 후에 동기화 도구를 사용하여 통제를 수행함.

나. 경쟁 조건 해결을 위한 핵심 기술요소

분류기술특징
하드웨어- 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 기반 동적 락 경합 분석 도구를 적용하는 추세임.