이전 글에서는 프로세스·스레드가 공유 자원을 동시에 사용하면 발생하는
**임계 구역 문제(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 획득
→ 즉시 임계 구역 진입 가능
보면 다음과 같은 순서로 동작합니다.
- P1: acquire() → lock 획득 → 임계 구역 진입
- P2: acquire() → 실패 → 대기 상태
- P1: 작업 완료 → release()
- P2: 기다리던 lock 획득 → 임계 구역 진입
뮤텍스 락 = 한 명 들어가면 문 잠그고, 나올 때 다시 문 열어주는 방식
즉, 뮤텍스는 항상 한 번에 한 스레드만 임계 구역에 들어가도록 보장합니다.
정리하면
뮤텍스(Mutex)는 여러 스레드가 동시에 공유 자원에 접근하지 못하게
'문을 잠그는 방식'으로 상호 배제를 보장하는 동기화 도구이다.
'컴퓨터 과학' 카테고리의 다른 글
| [운영체제] 동기화와 교착 상태 - 조건 변수와 모니터 (0) | 2025.11.29 |
|---|---|
| [운영체제] 동기화와 교착 상태 - 세마포 (0) | 2025.11.29 |
| [운영체제] 동기화와 교착 상태 - 임계구역 (0) | 2025.11.29 |
| [운영체제] 프로세스와 스레드 - 프로세스 간 통신 (0) | 2025.11.27 |
| [운영체제] 프로세스와 스레드 - 멀티 프로세스와 멀티 스레드 (0) | 2025.11.27 |