Mutex&semaphore
title: 2025-08-25 author: 강병호 date: 2025-08-25 category: TIL/강병호/2025/08 layout: post (자유) —
뮤텍스와 세마포어의 차이
OS에서 여러 프로세스나 스레드가 동시에 하나의 자원에 접근하려할 때 경쟁 상태가 발생할 수 있다. 이를 방지하기 위해 고안된 대표적인 동기화 도구를 뮤텍스, 세마포어가 존재하는데 두 개념은 사용 목적에 따라 큰 차이가 존재한다.
뮤텍스
- 한 순간에 하나의 실행 단위(프로세스/스레드)만 자원을 사용하도록 보장하는 기법
- 이진 상태 (locked/unlocked)만 존재
- 소유권의 개념이 존재하여 Lock을 획득한 스레드, 프로세스 만이 해제해야한다.
- 주로 임계 구역에 하나의 스레드만 들어가야하는 상황에 사용
e.g. 은행 계좌 잔액 수정 시, 동시에 2개의 스레드가 접근하면 데이터 불일치가 발생가능하다.
세마 포어
- 카운터를 이용해서 동시에 접근 가능한 자원의 개수를 제어하는 동기화 도구
- P(wait, down)과 V(signal, up)연산으로 관리
종류
- 이진 세마 포어
- 값을 0 또는 1로 처리
- 뮤텍스와 비슷하지만 소유권의 개념이 없어 Lock을 걸지 않은 다른 실행 단위도 해제 가능
- 카운팅 세마 포어
- 0~N의 값 존재
- 동시에 여러 개의 스레드가 접근 가능한 자원 풀 관리에 사용된다.
- DB pool에서 최대 10개의 동시 연결이 고나리되는 것과 동일.