운영체제

하드웨어 동기화와 뮤텍스

임계 영역 문제를 해결하려면, 한 번에 하나의 스레드만 진입을 보장하는 메커니즘이 필요합니다. 소프트웨어 알고리즘(Peterson's 등)으로도 가능하지만, 현대 CPU는 메모리 재정렬과 다코어 캐시 일관성 때문에 소프트웨어 방법만으로는 불충분합니다.

Test-and-Set (TAS)와 Compare-and-Swap를 중심으로 하드웨어 동기화와 뮤텍스의 판단 흐름을 읽습니다.

핵심 흐름

1

인터럽트 비활성화

가장 원시적인 방법입니다.

2

하드웨어 원자적 명령어

현대 CPU는 여러 메모리 연산을 단일 하드웨어 명령어로 수행하는 원자적 명령어를 제공합니다.

3

스핀락

스핀락(Spinlock)은 TAS로 구현하는 가장 단순한 동기화 방법입니다.

4

뮤텍스 (Mutex)

뮤텍스(Mutex, Mutual Exclusion Lock)는 스핀락의 바쁜 대기 문제를 해결합니다.