[OS] spinlock : 스핀락

Jerry·2021년 9월 12일
0

language & framework study

목록 보기
24/28

스핀락이란 다른 스레드가 임계영역에 lock을 점유한 상황에서 lock을 반환하기 까지 계속 loop를 돌며 확인하고 기다리는 것입니다.

뮤텍스(Mutex)의 경우에는 다른 스레드가 lock을 점유한 경우에 sleep 상태로 빠집니다. 이후 다른스레드가 작업이 끝나고 lock을 반환하면 awake 되면서 lock 획득을 재시도 하게 됩니다.

장점

스핀락은 스레드의 상태를 변경하지 않고 CPU를 계속 점유하기 때문에 컨텍스트 스위칭으로 인한 오버해드가 발생하지 않습니다.

임계영역의 작업이 간단하여 lock의 점유-반환 시간이 짧다면, 컨텍스트 스위칭 비용을 아끼면서 효율적으로 작업을 처리할 수 있게 됩니다.

단점

하지만, 임계영역의 작업이 복잡하고 lock의 점유-반환 시간이 길다면, CPU가 다른 스레드의 작업을 처리할 기회 비용을 날리며 busy waiting 상태에 빠져 비효율적인 작업 처리가 됩니다.

[참고]

wekipedia - spinlock

profile
제리하이웨이

0개의 댓글