원자적 판정 뒤 대기 길이에 맞는 락을 고른다

다중 코어의 상호 배제는 읽기와 쓰기를 한 사건으로 묶어 승자 하나를 정한 뒤, 패자가 기다릴 비용을 스핀과 수면 중에서 선택하는 문제다.

1. 경쟁 감지

read + write

여러 코어의 갱신이 겹쳐 공유 값이 깨질 수 있다.

2. 원자적 승자 결정

TAS · CAS

비교와 교체를 한 사건으로 묶어 한 스레드만 들인다.

임계 구역의
예상 대기 길이?
짧음

spinlock · CPU에서 대기

busy wait

곧 풀릴 락이면 문맥 교환 비용보다 반복 확인이 싸다.

mutex · 잠들어 대기

sleep + wake

대기가 길면 스레드를 재워 CPU를 다른 작업에 넘긴다.

선택 기준 · 인터럽트 차단은 단일 CPU 커널의 매우 짧은 구간에만 유효하다. 멀티코어에서는 원자적 명령이 필수이고, 예상 임계구역 길이가 대기 정책을 정한다.