[CS기초] Semaphore와 Mutex, 동시성 제어의 핵심 도구

2025. 5. 9. 20:16·크래프톤 정글/CS기초(키워드, 개념정리)

Semaphore와 Mutex, 동시성 제어의 핵심 도구

운영체제에서 동시성(Concurrency)은 여러 프로세스나 스레드가 CPU를 번갈아 사용하며 실행되는 환경을 의미합니다. 이때 공유 자원(Shared Resource)을 동시에 접근하게 되면 경쟁 상태(Race Condition)가 발생할 수 있는데요. 이를 해결하기 위해 사용하는 대표적인 도구가 바로 Semaphore와 Mutex입니다.

 

 

핵심 개념 요약

항목 Semaphore (세마포어) Mutex (뮤텍스)
목적 자원 개수 제어 임계 구역 보호
값의 범위 0 이상 (N ≥ 1) 0 또는 1
소유 개념 없음 소유한 스레드만 unlock 가능
사용 예시 제한된 리소스 관리 (ex. DB 커넥션) 공유 변수 보호
구현 방식 wait() / signal() lock() / unlock()

 

Semaphore / Mutex 깊이 들어가기

  • Semaphore는 카운팅 세마포어와 바이너리 세마포어로 나뉜다.
    • 카운팅 세마포어는 동시에 접근 가능한 자원의 개수를 관리한다.
    • 바이너리 세마포어는 사실상 Mutex와 유사하게 동작한다.
  • Mutex 는 스레드 간 상호 배제를 보장하며, 일반적으로 한 번에 하나의 스레드만 임계 구역에 진입할 수 있도록 보장한다.

 

간단한 코드 비교

// Mutex 예시
pthread_mutex_t lock;

pthread_mutex_lock(&lock);		// 공유 자원 접근 시 락 걸기
/* 공유 자원 사용 */
pthread_mutex_unlock(&lock);	// 사용 후 락 풀기


// Semaphore 예시
sem_t sem;

sem_wait(&sem);  // 공유 자원 획득
/* 공유 자원 사용 */
sem_post(&sem);  // 공유 자원 반환

 

 

요약 정리

  • Mutex는 1개의 리소스를 보호한다.
  • Semaphore는 여러 개의 자원을 제어한다.

 

마치면서

Semaphore와 Mutex는 운영체제의 동시성 제어에서 빠질 수 없는 핵심 개념입니다. 비슷해 보이지만 용도와 동작 방식에 차이가 있기 때문에 상황에 따라 적절한 선택을 하는 것이 중요하지요. 두 개념의 차이를 이해하는 순간, 동시성 제어는 더 이상 추상적인 개념이 아니게 됩니다.

저작자표시 비영리 변경금지 (새창열림)

'크래프톤 정글 > CS기초(키워드, 개념정리)' 카테고리의 다른 글

[CS기초] Deadlock(데드락)  (0) 2025.05.09
[CS기초] Race Condition, 동시성 버그의 핵심 원인  (0) 2025.05.09
[CS기초] CPU Scheduling 알고리즘 핵심 정리  (0) 2025.05.09
[CS기초] Process와 Thread 핵심 정리  (0) 2025.05.09
[중간정리] 8주차 - HTTP, 파일 디스크립터, TCP/UDP, C언어(포인터)  (0) 2025.05.06
'크래프톤 정글/CS기초(키워드, 개념정리)' 카테고리의 다른 글
  • [CS기초] Deadlock(데드락)
  • [CS기초] Race Condition, 동시성 버그의 핵심 원인
  • [CS기초] CPU Scheduling 알고리즘 핵심 정리
  • [CS기초] Process와 Thread 핵심 정리
그냥사람_
그냥사람_
IT 관련 포스팅을 합니다. 크래프톤 정글 8기 정경호
  • 그냥사람_
    그냥코딩
    그냥사람_
  • 전체
    오늘
    어제
    • 글 전체보기 N
      • 크래프톤 정글 N
        • 로드 투 정글(입학시험)
        • CS기초(키워드, 개념정리) N
        • 컴퓨터구조(CSAPP)
        • Code 정글(C언어) N
        • 마이 정글(WIL, 에세이)
      • 자료구조&알고리즘
        • 자료구조
        • 알고리즘
      • 일상
  • 블로그 메뉴

    • 홈
  • 링크

    • Github
  • hELLO· Designed By정상우.v4.10.3
그냥사람_
[CS기초] Semaphore와 Mutex, 동시성 제어의 핵심 도구
상단으로

티스토리툴바