원자 명령
TAS와 CAS는 읽기와 쓰기를 하나의 중단 불가능한 하드웨어 동작으로 묶는다.
atomic락은 CPU 원자 명령어, 스핀 대기, 커널 sleep/wakeup, 사용자 공간 fast path가 이어진 결과다.
TAS와 CAS는 읽기와 쓰기를 하나의 중단 불가능한 하드웨어 동작으로 묶는다.
atomic짧은 임계 구역은 문맥 전환보다 바쁜 대기가 더 싸서 spinlock을 쓴다.
busy wait오래 기다릴 가능성이 있으면 커널에 잠들어 CPU를 양보하는 mutex가 낫다.
sleep경합이 없으면 사용자 공간에서 끝내고 경합이 있을 때만 커널이 깨우기를 맡는다.
fast userspaceunlocked -> CAS success -> critical section
locked -> spin or futex_wait -> futex_wake