Learning
토픽 92 / 97·비교표

프로세스 동기화와 교착상태

뮤텍스 vs 세마포어 vs 스핀락

항목뮤텍스세마포어스핀락
잠금 방식이진 (lock/unlock)카운터 (P/V)이진 (busy-wait)
대기 방식Sleep (블로킹)Sleep (블로킹)Busy-wait (CPU 점유)
소유권있음 (lock한 스레드만 unlock)없음 (누구나 V 가능)있음
자원 수1개N개1개
적합사용자 공간, 긴 임계구역자원 개수 제한, 동기화커널, 짧은 임계구역

모니터 vs 세마포어

항목모니터세마포어
수준고수준 (ADT)저수준
상호배제자동 (enter/exit)수동 (P/V)
오류 가능성낮음 (캡슐화)높음 (P/V 순서 실수)
언어 지원Java synchronized, PythonPOSIX, 시스템 호출
signal 의미Hoare (즉시) / Mesa (while 재확인)V 연산 (깨움)

RCU vs Reader-Writer Lock vs Mutex

항목RCUReader-Writer LockMutex
읽기 성능무잠금 (최고)공유 잠금완전 잠금
쓰기 복잡도높음 (Copy-Update)중간낮음
데드락없음가능가능
적합읽기 중심 워크로드읽기 많은 경우범용

경쟁 상태 vs 교착상태 vs 기아

항목Race ConditionDeadlockStarvation
본질비결정적 결과영구 블록무한 대기
원인동기화 미적용순환 대기 (4조건)우선순위 편중
재현어려움 (타이밍 의존)상대적 용이상대적 용이
해결뮤텍스/원자적 연산예방/회피/탐지에이징/공정 스케줄링

데드락 처리: 예방 vs 회피 vs 탐지/복구

항목예방 (Prevention)회피 (Avoidance)탐지/복구 (Detection)
시점사전 (조건 제거)사전 (안전성 검사)사후 (발생 후 처리)
오버헤드낮음중간 (O(m×n²))탐지+복구 비용
자원 활용낮음중간높음
실용성제한적최대요구량 필요실용적

IPC 비교: 파이프 vs 공유메모리 vs 메시지큐 vs 소켓

항목파이프공유 메모리메시지 큐소켓
방향단방향양방향양방향양방향
범위로컬 (관련 프로세스)로컬로컬로컬+원격
속도빠름최고중간느림 (네트워크)
동기화자동 (버퍼 블로킹)수동 (세마포어/뮤텍스)자동자동
적합부모-자식, 셸대용량 데이터비동기, 우선순위네트워크, 범용

동시성 프로그래밍 모델 비교

항목스레드 기반Actor 모델CSPasync/await
통신공유 메모리메시지 전달채널Future/Promise
안전성낮음 (경쟁 조건)높음 (캡슐화)높음 (동기적)중간
대표 언어Java, C++Erlang, AkkaGoJavaScript, Rust
적합시스템 프로그래밍분산 시스템동시성 서버I/O 바운드