Mutex

Mutex **뮤텍스 (Mutex)**는 멀티스레드 및 멀티프로세스 환경에서 공유 자원에 대한 동시 접근을 제어하기 위한 핵심 동기화 프리미티브다. 임계 구역 (Critical Section) 에 한 번에 하나의 실행 흐름만 접근하도록 보장하며, 레이스 조건, 데이터 무결성 문제, 교착 상태 등을 예방한다. 스핀 락, 재귀 락, 슬립 락 등 다양한 구현 방식이 존재하며, 우선순위 상속, 데드락 회피, 우선순위 역전 대응 등 고급 기능도 지원된다. 현대 운영체제 및 프로그래밍 언어에서 폭넓게 활용되며, RW-lock, RCU, Lock-Free 구조 등이 대체 기법으로 함께 고려된다. ...

October 4, 2024 · 42 min · Me

Monitor

Monitor 대표 태그 생성 Synchronization-Primitive Concurrency-Control Mutual-Exclusion 동작-메커니즘 대표 태그 생성 Synchronization-Primitive Thread-Safety Concurrency-Control High-Level-Abstraction 분류 체계 검증 현재 분류: “Computer Science Fundamentals > Concurrency and Parallelism > Synchronization Primitives > Software Level” 검증 결과: 적절한 분류입니다. 근거: 모니터 (Monitor)는 동시성 제어를 위한 소프트웨어 수준의 동기화 기법으로, 뮤텍스 (Mutex)와 조건 변수 (Condition Variables)를 결합한 고수준 추상화 메커니즘입니다. 운영체제나 하드웨어 수준이 아닌 프로그래밍 언어 차원에서 제공되는 동기화 구조이므로 Software Level 분류가 정확합니다. ...

October 3, 2024 · 98 min · Me

Semaphore

Semaphore 세마포어 (Semaphore) 는 1965 년 에츠허르 W. 다이크스트라가 제안한 동기화 메커니즘으로, 멀티스레드·멀티프로세스 환경에서 공유 자원 접근을 제어한다. 내부 정수 카운터와 대기 큐를 관리하며, 원자적 연산인 P(wait/acquire) 와 V(signal/release) 를 통해 자원 사용 순서를 조율한다. 이진 세마포어 (Binary) 는 뮤텍스처럼 단일 접근을 보장하고, 카운팅 세마포어 (Counting) 는 N 개의 자원을 관리한다. POSIX, System V, Java, Python, Go 등 다양한 환경에서 구현되어 임계 구역 보호, 리소스 풀 관리, 생산자 - 소비자 문제, 네트워크 요청 제한 등 폭넓게 활용된다. ...

October 3, 2024 · 62 min · Me

Critical Section

Critical Section 임계 구역 (Critical Section) 은 여러 실행 흐름이 공유 자원을 안전하게 사용할 수 있도록 동시 접근을 제어하는 코드 블록이다. 상호 배제, 진행성, 유한 대기의 세 원칙을 기반으로 하며, mutex, semaphore, monitor, atomic 연산 등으로 보호된다. Dekker 와 Peterson 알고리즘 같은 고전적 해법부터 현대 언어의 동기화 추상화까지 폭넓게 활용되며, 데드락, 기아, 경쟁 상태를 예방한다. 등장 배경 및 발전 과정 Critical Section은 단일 흐름 환경에서는 문제가 되지 않았지만, 멀티프로세스/멀티스레드/멀티코어 환경이 도입되면서 **경쟁 조건 (Race Condition)**을 해결하기 위한 동기화 문제의 핵심 개념으로 발전했다. Dekker, Peterson 등의 초기 알고리즘에서 시작해, 세마포어, 모니터, 뮤텍스 등의 운영체제 기반 기술로 이어졌고, 현재는 락프리 구조, 메모리 일관성 모델, 고수준 언어 내장 기법 등으로 진화하고 있다. ...

May 20, 2025 · 35 min · Me