Linux 커널에서 스핀 록을 유지하면서 커널 선점이 활성화되면 교착 상태가 발생할 수 있습니까?스핀 록을 유지하면서 커널 선점
2
A
답변
3
커널 선점은 교착 상태가 없음을 보장하지 않습니다.
스레드는 아직 잠금을 해제하지 않고도 잠금을 유지할 수 있으며, 다른 스레드가 동일한 잠금을 얻으려는 경우에도 여전히 교착 상태가 발생할 수 있습니다. 교착 상태를 피하기 위해 잠금을 보유하고있는 스레드가이를 해제하기로 결정해야합니다. 즉, 스레드 또는 다른 논리가 스레드 및을 선점하여 잠금을 해제해야합니다. 커널 자체가 스레드가 잠금을 해제하도록 할 수 없습니다.
커널은 단순히 다른 스레드를 실행하도록 예약 할 수 있지만 다른 스레드가 첫 번째 스레드가 완료되면 해당 스레드가 차단됩니다.
스레드 A는 스레드 B가 획득 한 일부 공유 리소스에 대한 잠금 대기 : 예를 들어
.
스레드 A get이 선점되고 스레드 B가 예약됩니다.
스레드 B가 공유 리소스 스레드 A의 잠금을 대기 중입니다.
교착 상태. 스레드 A 나 스레드 B 모두 진행을 할 수 없습니다.
교착 상태를 해제하려면 스레드 A 또는 B가 잠금 해제되도록 선행해야합니다. 커널 선점은 그렇게 할 수 없습니다.
관련 문제
- 1. 선점 및 비 선점 커널 정보
- 2. CAS를 사용하지 않고 스핀 록을 작성하는 방법
- 3. 스핀 록을 사용하는 좋은 생각은 언제입니까?
- 4. InitializeCriticalSectionAndSpinCount, 기본 스핀 카운트가 있습니까?
- 5. 스핀 락을 신호로 바꿉니다.
- 6. 로깅 선점
- 7. 동일한 프로세서에 2 개의 스핀 록이 있습니까?
- 8. 선점 인증 이유
- 9. 비 선점 Pthreads?
- 10. C++ 스핀 이미지 리소스
- 11. pthread_wrlock_xxlock 스핀 잠금이 아닙니까?
- 12. Jquery 스핀 버튼
- 13. urllib2는 선점 인증 인증을 지원합니까?
- 14. Delphi의 선점 형 멀티 스레딩
- 15. 스레딩 및 스레드 선점 동기화
- 16. GCC 원자 작업에서 만들어진 경량 스핀 록?
- 17. Intel Inspector가 스핀 록 구현에서 데이터 경주를보고합니다.
- 18. cmpxchg를 사용하는 x86 스핀 락
- 19. 정확히 "스핀 록"이란 무엇입니까?
- 20. Linux/SMP 스핀 록이 불필요하게 느린가요?
- 21. 2.6 커널 커널에서 프로파일 링 잠금
- 22. 안드로이드 httpclient - 선점 인증을 사용하여 파일 받기
- 23. groovy http-builder를 선점 모드로 사용
- 24. 교착 상태를 방지하는 협동/비 선점 스레드?
- 25. DefaultHTTPClient 및 선점 인증을 사용하여 파일 다운로드
- 26. httplib2로 선점 인증을 수행 할 수 있습니까?
- 27. 커널 API 또는 커널 API 사용
- 28. 커널 모듈
- 29. 커널 구성
- 30. 변경 커널
@Ben : 동의합니다. 나중에 어떤 상황에서 교착 상태가 발생할 것인지를 분명히했습니다. 그러나 귀하의 요점은 유효합니다. 나는 그것을 더 명확하게하기 위해 논평을 수정할 것이다. 감사. –