-
[운영체제] 스핀락(Spinlock)은 무엇인가?ComputerScience/운영체제 2020. 6. 14. 00:42
2020/06/14 - [운영체제] - [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor)
뮤텍스와 비교되는 스핀락 빙글빙글 돈다는 의미에서 스핀락이다.
스핀락
특정한 자료구조를 lock 또는 unlock 함으로써 공유 데이터에 대한 접근 권한을 관리하는 방법이다. 권한을 획득하기 전까지는 CPU는 무의미한 코드를 수행하는 busy waiting 상태로 대기하고 있다가 접근 권한을 얻는다면 내부 코드를 수행하고 종료 후 권한을 해제한다. 상태가 획득/해제 밖에 없기 때문에 공유 영역에는 하나의 컴퍼넌트만 접근할 수 있으며 획득과 해제의 주체는 동일해야 한다.
즉, Lock를 얻을 수 없다면 계속해서 for문을 돌면서 Lock을 얻을 수 있는 지 확인한다. Lock-Unlock 과정이 짧을 때, 쓰면 좋다.
또한 운영체제의 스케줄링 지원을 받지 않기 때문에 문맥 교환이 일어나지 않는다.
어떤 스레드가 lock를 오랫동안 유지한다면 계속해서 spinlock을 돌기 때문에 CPU에 부하가 생긴다. (기아) 다중 코어 컴퓨터에선 대기 시간이 짧을 것으로 예상되고 경합이 적으면 스핀락을 사용하는 것이 효과적이다.
'ComputerScience > 운영체제' 카테고리의 다른 글
[Unix] fork(), vfork(), Copy On Write, exec() (0) 2020.06.14 [운영체제] Atomic연산, CAS(CompareAndSwap)에 대하여, ABA문제 (0) 2020.06.14 [운영체제] 뮤텍스(Mutex), 세마포어(Semaphore) 그리고 모니터(Monitor) (0) 2020.06.14 [운영체제]데드락을 회피할 수 있는 자원할당 그래프, 은행원 알고리즘 (0) 2020.06.13 [운영체제] 데드락(Dead lock), 교착상태가 뭐지? + 해결방법 (0) 2020.06.13