spinlockblockinglock-contention

Spinlock과 blocking lock의 차이를 설명해 주세요

예상 시간
8
30초 답변

꼬리질문

조금 더 깊게 물어본다면

답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.

spinlock이 CPU를 낭비한다는 말은 무슨 뜻인가요?

부가 설명

lock을 기다리는 시간도 비용입니다. 아주 짧게 잡히는 lock이라면 잠들었다가 다시 깨는 비용이 더 클 수 있습니다. 이때 spinlock은 그냥 몇 번 더 확인하고 바로 들어가는 전략입니다. 하지만 lock이 오래 잡히면 CPU 한 코어를 사실상 대기만 하며 태웁니다.

그래서 spinlock은 커널 내부나 매우 짧은 critical section처럼 제한된 상황에서 조심스럽게 쓰입니다. 애플리케이션 레벨에서는 blocking lock이나 adaptive lock이 더 흔합니다. 선택 기준은 대기 시간, 코어 수, 선점 가능성, 임계 구역 길이입니다.

한 줄 정리

Spinlock은 짧게 바쁘게 기다리는 lock이고, blocking lock은 오래 기다릴 때 CPU를 양보하는 lock입니다.