spinlockblockinglock-contention
Spinlock과 blocking lock의 차이를 설명해 주세요
- 예상 시간
- 8분
30초 답변
꼬리질문
조금 더 깊게 물어본다면
답변 뒤에 이어질 수 있는 질문들을 하나씩 열어볼 수 있어요.
spinlock이 CPU를 낭비한다는 말은 무슨 뜻인가요?
single-core에서 spinlock은 왜 위험할 수 있나요?
adaptive mutex는 무엇인가요?
spinlock을 쓸 때 임계 구역을 짧게 유지해야 하는 이유는 무엇인가요?
blocking lock의 단점은 무엇인가요?
부가 설명
lock을 기다리는 시간도 비용입니다. 아주 짧게 잡히는 lock이라면 잠들었다가 다시 깨는 비용이 더 클 수 있습니다. 이때 spinlock은 그냥 몇 번 더 확인하고 바로 들어가는 전략입니다. 하지만 lock이 오래 잡히면 CPU 한 코어를 사실상 대기만 하며 태웁니다.
그래서 spinlock은 커널 내부나 매우 짧은 critical section처럼 제한된 상황에서 조심스럽게 쓰입니다. 애플리케이션 레벨에서는 blocking lock이나 adaptive lock이 더 흔합니다. 선택 기준은 대기 시간, 코어 수, 선점 가능성, 임계 구역 길이입니다.
한 줄 정리
Spinlock은 짧게 바쁘게 기다리는 lock이고, blocking lock은 오래 기다릴 때 CPU를 양보하는 lock입니다.