1
인터럽트 비활성화
단일 CPU에서는 임계 구간 동안 선점을 막을 수 있지만, 다중 코어의 동시 메모리 접근까지 막지는 못합니다.
임계 영역 문제를 해결하려면, 한 번에 하나의 스레드만 진입을 보장하는 메커니즘이 필요합니다. 소프트웨어 알고리즘(Peterson's 등)으로도 가능하지만, 현대 CPU는 메모리 재정렬과 다코어 캐시 일관성 때문에 소프트웨어 방법만으로는 불충분합니다.
원자적 명령, 임계 영역 보호, 바쁜 대기 비용을 기준으로 뮤텍스 사용 조건을 구분합니다.
단일 CPU에서는 임계 구간 동안 선점을 막을 수 있지만, 다중 코어의 동시 메모리 접근까지 막지는 못합니다.
TAS, compare-and-swap 같은 명령은 읽기와 쓰기를 하나의 원자적 단계로 묶어 락 획득 경쟁을 하드웨어 수준에서 판정합니다.
스핀락은 락이 풀릴 때까지 CPU를 양보하지 않고 반복 확인하므로, 임계 구간이 매우 짧을 때만 비용이 맞습니다.
뮤텍스(Mutex, Mutual Exclusion Lock)는 스핀락의 바쁜 대기 문제를 해결합니다.