다음과 같은 경우 프로세스 B는 프로세스 A 릴리스 스핀을 대기하므로 OK를 preemt 하시겠습니까 ??? Process B: -->spin lock for same resource --> failed --> spin wait
왜 spin_lock은 선점을 비활성화해야합니까? 무슨 일이 일어날 지 미리 결정하지 못하게할까요?
0
A
답변
2
Process A: -->spin lock --> do strict call --> before unlock time int
Time int ISR: --> Process A time slice finished --> need schedule -->ISR ret --> schedule to Process B
상황에서 당신은 프로세스 B를 제공 것이다 바쁜 그 조각이 종료 될 때까지 대기 및 프로세스 occures로 재조정. 따라서 전체 시간 조각은의 시간 낭비가 입니다.가 occures되지 않습니다 프로세스에 프로세스 B로 전환하는 경우
상황이 더 악화 될 수 있습니다. 예를 들어 프로세스 B의 우선 순위가 프로세스 A 중 하나 이상인 경우 이 경우 교착 상태입니다.
spin_lock
에서 선매를 사용 중지하면 위에 설명한 시간과 교착 상태를 모두 방지 할 수 있습니다.