콘텐츠로 이동

뮤텍스 락 (Mutex Lock)

Jan 27, 2026

Mutex Lock은 MUTual EXclusion의 줄임말로, acquire()release() 연산으로 임계구역을 보호하는 동기화 도구이다. 하드웨어 동기화 명령어는 저수준이라 응용 프로그래머가 직접 사용하기 어려우므로, OS 설계자가 하드웨어 기반으로 더 쉬운 고수준 도구를 제공한 것이다.

비유하면, 화장실 문 잠금장치와 같다. 들어갈 때 잠그고(acquire), 나올 때 해제한다(release). 잠겨 있으면 기다린다.

while (true) {
acquire(lock); // 진입 - lock 획득
/* critical section */
release(lock); // 퇴출 - lock 반환
/* remainder section */
}
acquire() {
while (!available)
; // busy wait (spinlock 방식)
available = false;
}
release() {
available = true;
}

available 불린 변수로 lock 상태를 관리하며, acquire()release()는 CAS 기반으로 원자적으로 실행된다.

특성SpinlockSleep Lock
대기 방식Busy waiting (반복 확인)프로세스를 waiting 상태로 전환
CPU 사용대기 중 CPU 계속 사용대기 중 CPU 양보
Context Switch없음2회 필요 (sleep → wakeup)
적합한 상황짧은 임계구역, 멀티코어긴 임계구역, 단일코어

“Short Duration”의 기준: Lock 유지 시간이 2회의 context switch 시간보다 짧으면 Spinlock이 유리하다.

유형설명
UncontendedLock 획득 시 바로 사용 가능
Low Contention적은 수의 스레드가 경쟁
High Contention많은 스레드가 경쟁 → 성능 저하
  • 파일 접근 시 여러 스레드가 동시에 쓰기 방지
  • 공유 자료구조(리스트, 큐 등) 수정 시 일관성 보장