저는 Linux 필드를 처음 사용합니다.Spinlocks - (단일 프로세서 대 다중 프로세서) - (선점 형 커널과 비 선점 형 커널)
다양한 시나리오에서 (커널 모드에서) 스핀 록 사용에 약간의 혼란이 있습니다. 명확히하십시오.
스핀 록은 통화 중 대기 메커니즘으로 사용됩니다.
1) 스핀 락 (단일 프로세서 + 비 선점 형 커널) -> (존재하지 않기 때문에 당신이 스핀 록에가) 교착 상태가 발생할 것이다 동안 잠을 경우
2) 스핀 락 (단일 프로세서 + 선제 커널) - > 리소스를 낭비 할 때 사용하지 않아야합니다 (스레드가 잠금을 유지하면서 잠자기 상태가되면 어떻게됩니까? 다른 프로세스도 정상적으로 실행할 수 있습니까?) 012) 조심스럽게 (잠금을 유지하면서 스레드가 잠자기 상태가되면 어떻게됩니까?) 다른 프로세스도 정상적으로 실행할 수 있습니까?
위의 시나리오에 대한 이해가 적절하다면 알려주십시오. 스핀 록 사용을 명확히하는 데 도움이되는 추가 정보를 제공해주십시오.
는 여기에 이전을 만든 하나 http://stackoverflow.com/questions/6555358/linux-kernel-preemption-during-spinlock-and-mutex-lock/6556013#6556013 – Dipstick
안녕하세요, 스핀 록 사용에 대한 많은 고려 사항이 있습니다. 스핀 록을 사용하기에 가장 좋은 곳은 잠들 수없는 "인터럽트 컨텍스트"에 있습니다. 전역 구조 또는 전역 변수를 업데이트하는 작은 코드 경로에서 스핀 록을 사용할 수 있습니다. "irq_save"API가있는 스핀 록은 사용하는 것이 가장 좋습니다. –