본문 바로가기

Programming/Operating System

운영체제 · 스핀락

스핀락 (Spinlock)


정의 : 임계 구역에 진입이 불가능할 때, 진입 가능할 때까지 루프를 돌면서 진입을 재시도하는 방식으로 구현된 락

✓ 임계 구역에 진입하기 위해서는 락(Lock)이 필요하기 때문에, 락을 획득할 때까지 해당 프로세스(스레드)가 돌고 있다(Spin)는 것을 의미한다.

✓ 스핀락은 바쁜 대기(Busy waiting)의 한 종류이다.

✓ 스핀락은 운영체제의 스케줄링을 지원받지 않기 때문에, 해당 프로세스(스레드)에 대한 Context switch가 일어나지 않는다.


장점 : 임계 구역 진입을 짧은 시간 내에 할 수 있다면, Context switch를 하지 않아도 되므로 효율적이다.

단점 : 오랜 시간 동안 스핀락을 진행하고 있다면, 스레드의 대기 시간이 길어지므로 비효율적이다.





바쁜 대기 (Busy waiting)


정의 : 어떤 특정 공유 자원에 대하여 두 개 이상의 프로세스(스레드)가 접근 권한을 얻고자 하는 동기화 상황일 때, 그 권한 획득을 위한 과정에서 일어나는 현상

✓ FCFS 등의 우선순위 스케줄링 기반의 싱글 프로세서 시스템에서는 비효율적이다. 멀티 프로세서 환경에서 사용하는 것이 좋다.