컴퓨터 과학

[운영체제] 동기화와 교착 상태 - 동기화 기법

Data Jun 2025. 11. 29. 21:38

이전 글에서는 프로세스·스레드가 공유 자원을 동시에 사용하면 발생하는
**임계 구역 문제(critical section problem)**와
**레이스 컨디션(race condition)**에 대해 살펴봤습니다.

 

[운영체제] 동기화와 교착 상태 - 임계구역

 

[운영체제] 동기화와 교착 상태 - 임계구역

운영체제를 공부하다 보면 반드시 등장하는 개념이 바로 **동기화(synchronization)**와 **교착(race condition, 임계 구역 문제)**입니다.특히 멀티코어 환경에서는 여러 스레드가 동시에 실행되기 때문에

wnsgud4553.tistory.com

 

이번 글에서는 이러한 문제를 해결하는 대표적인 동기화 도구인
**뮤텍스 락(Mutex Lock)**을 자세히 이해하고,

1. 동기화 기법: 뮤텍스 락(Mutex Lock) 

먼저 핵심 개념부터 정리하면,

 

뮤텍스 락(Mutex)
→ 동시에 접근하면 안 되는 자원을 보호하기 위한 ‘잠금 장치’
→ 임계 구역에 들어가기 전 반드시 lock을 획득하고(acquire)
→ 작업이 끝나면 다시 lock을 해제(release)해야 함

 

 

즉, 뮤텍스는 공유 자원 앞에서
“지금 사용 중이니까 기다려!”
라고 말해주는 문지기(도어락) 같은 역할입니다.

 

2. 뮤텍스의 구성 요소

뮤텍스 락은 크게 **공유 변수(lock)**와
**두 개의 함수(acquire, release)**로 구성됩니다.

 

1️⃣  lock 변수

  • 현재 자원이 잠겨 있는지(=사용 중인지) 표시
  • 스레드 간 공유됨

2️⃣  acquire()

  • 임계 구역에 들어가기 위해 lock을 얻는 함수
  • 이미 잠겨 있으면 → 기다림(block)

3️⃣  release()

  • 임계 구역 작업을 마치고 lock을 해제하는 함수
  • 다른 스레드가 진입할 수 있도록 문을 열어줌

 

3. 뮤텍스의 동작 흐름(임계 구역 보호)

1️⃣ P1 프로세스가 임계 구역 접근 요청

→ acquire() 호출
→ lock을 얻음 (성공)
→ 임계 구역 진입

 

2️⃣ P2 프로세스도 접근 요청

→ acquire() 호출
→ 하지만 lock이 이미 P1이 가지고 있기 때문에 진입 불가
→ 대기 상태로 멈춤(block)

 

3️⃣ P1 작업 완료

→ release() 호출
→ lock 해제

 

4️⃣  P2가 lock 획득

→ 즉시 임계 구역 진입 가능

 

보면 다음과 같은 순서로 동작합니다.

  1. P1: acquire() → lock 획득 → 임계 구역 진입
  2. P2: acquire() → 실패 → 대기 상태
  3. P1: 작업 완료 → release()
  4. P2: 기다리던 lock 획득 → 임계 구역 진입

 

뮤텍스 락 = 한 명 들어가면 문 잠그고, 나올 때 다시 문 열어주는 방식

 

 

즉, 뮤텍스는 항상 한 번에 한 스레드만 임계 구역에 들어가도록 보장합니다.

 

 

 

정리하면

 

뮤텍스(Mutex)는 여러 스레드가 동시에 공유 자원에 접근하지 못하게
'문을 잠그는 방식'으로 상호 배제를 보장하는 동기화 도구이다.