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)연산으로 관리

종류

  1. 이진 세마 포어
    • 값을 0 또는 1로 처리
    • 뮤텍스와 비슷하지만 소유권의 개념이 없어 Lock을 걸지 않은 다른 실행 단위도 해제 가능
  2. 카운팅 세마 포어
    • 0~N의 값 존재
    • 동시에 여러 개의 스레드가 접근 가능한 자원 풀 관리에 사용된다.
    • DB pool에서 최대 10개의 동시 연결이 고나리되는 것과 동일.

results matching ""

    No results matching ""