hardware sync decision map

원자적 명령은 락 선택의 출발점이다

다중 코어에서는 인터럽트 비활성화만으로 상호 배제를 보장할 수 없습니다. 읽기와 쓰기를 한 사건으로 묶는 하드웨어 원자성이 락 구현의 기반이 됩니다.

목표한 번에 하나의 스레드만 임계 영역에 진입
위험메모리 재정렬, 캐시 일관성, 선점으로 인한 경쟁
선택짧은 대기는 스핀, 긴 대기는 잠드는 뮤텍스
01

인터럽트 비활성화

단일 CPU 커널의 아주 짧은 구간에서만 선점을 막는 제한적 방법입니다.

02

TAS와 CAS

읽기와 쓰기, 비교와 교체를 하드웨어가 끊기지 않는 연산으로 수행합니다.

03

스핀락

락이 곧 풀릴 때 CPU를 양보하지 않고 짧게 반복 확인합니다.

04

뮤텍스

오래 기다릴 가능성이 있으면 스레드를 잠재워 CPU 낭비를 줄입니다.

수단맞는 범위좋은 점위험
인터럽트 차단단일 CPU 커널 내부구현이 단순하고 짧은 구간에 빠름멀티코어와 사용자 코드에는 부적합
CAS 루프작은 공유 값락 없이도 최소 하나의 스레드가 진행ABA 문제와 재시도 비용
스핀락매우 짧은 커널 임계구역잠들고 깨우는 비용이 없음긴 대기에서는 CPU 시간을 태움
뮤텍스일반 임계구역대기 스레드를 블록 상태로 보내 낭비를 줄임락 보유자가 지연되면 다른 스레드도 밀림

판정 상태

락 없음공유 변수 변경이 끼어들 수 있어 결과가 깨질 수 있습니다.
원자적 판정경쟁자 중 한 스레드만 성공하도록 하드웨어가 순서를 정합니다.
대기 정책기다리는 시간이 짧은지 긴지에 따라 스핀 또는 수면을 고릅니다.
mutex lens

학습 기준

뮤텍스는 단순한 잠금 변수가 아니라 하드웨어 원자성, 스케줄러 대기 큐, 임계구역 길이를 함께 고려한 운영체제 메커니즘입니다.