※ 스핀락(spinlock)은 임계 구역(critical section)에 진입이 불가능할 때 진입이 가능할 때까지 루프를 돌면서 재시도하는 방식으로 구현된 락을 가리킨다. 스핀락이라는 이름은 락을 획득할 때까지 해당 스레드가 빙빙 돌고 있다(spinning)는 것을 의미한다. 스핀락은 바쁜 대기의 한 종류이다.

스핀락은 운영 체제의 스케줄링 지원을 받지 않기 때문에, 해당 스레드에 대한 문맥 교환이 일어나지 않는다. 따라서 스핀락은 임계 구역에 짧은 시간 안에 진입할 수 있는 경우에 문맥 교환을 제거할 수 있어 효율적이다. 하지만 만약 스핀락이 오랜 시간을 소요한다면 다른 스레드를 실행하지 못하고 대기하게 되며, 이 경우 비효율적인 결과를 가져온다.


스핀락은 상대적으로 짧은 시간 안에 끝나는 작업들의 동기화에 쓰인다. 만약 오래 걸리는 작업들의 동기화에 스핀락을 사용한다면 많은 쓰레드들이 락을 잡으려는 시도를 계속 해댈태고, 이렇게 되면 CPU 점유율이 엄청나게 올라가게 될 것 이다


출처 : 

http://cclassic2.cafe24.com/Windows_Internal/4139



스핀락은 멀티프로세서 상호배제를 달성하기 위해 커널이 사용하는 메커니즘이다. 어느 한쪽 임계 영역으로 진입하기 전에 커널은 보호 DPC 큐와 관련된 스핀락을 획득해야 한다. 스핀락이 프리(free) 상태가 아니라면 커널은 획득에 성공할 때까지 계속 시도한다. 스핀락의 이름은 커널이 락을 얻을 때까지 돌면서(spinning) 대기하는 것에서 유래 했다.


스핀락은 유저 프로그램이 사용할 수는 없다. 모든 경우 인터럽트 스핀락으로 보호받는 코드는 극히 짧은 시간 동안만 실행해야 한다

중 코어 컴퓨터에서 대기 시간이 짧을 것으로 예상되고 경합이 적으면 다른 종류의 잠금보다 스핀락을 수행하는 것이 효과적이다. 스핀락은 지정된 시간에 잠금을 유지하는 스레드를 추적하기 위해 스레드-추적 모드를 지원한다.


http://zepeh.tistory.com/180


http://pk09.tistory.com/entry/%EB%94%94%EB%B0%94%EC%9D%B4%EC%8A%A4-%EB%93%9C%EB%9D%BC%EC%9D%B4%EB%B2%84-0019-%EB%8F%99%EA%B8%B0%ED%99%94-%EA%B8%B0%EB%B2%95-%EC%8A%A4%ED%95%80%EB%9D%BDSpinLock%EA%B3%BC-%EC%BB%A8%ED%8A%B8%EB%A1%A4%EB%9F%AC-%EC%98%A4%EB%B8%8C%EC%A0%9D%ED%8A%B8


http://egloos.zum.com/sweeper/v/2815499



















'프로그래밍 > 프로그래밍 용어 사전' 카테고리의 다른 글

고정 프레임 / 가변 프레임  (0) 2015.04.28
스핀락(spin-lock)  (0) 2015.04.28
ARP / ICMP / IGMP  (0) 2015.04.25
상태패턴 (State Pattern)  (0) 2015.04.15
유니코드(Unicode) / UTF(Unicode Transformation Format)  (0) 2015.04.09
오프셋 (Offset)  (0) 2015.03.18
Posted by GENESIS8

댓글을 달아 주세요