2014-02-24 5 views
5

PREEMPT_NONE과 PREEMPT_VOLUNTARY의 차이점은 무엇입니까? 설명서에 따르면Linux 커널 선점 수준

This option reduces the latency of the kernel by adding more 
"explicit preemption points" to the kernel code 

그러나이 점에 대해서는 언급하지 않았습니다. 인터넷 검색을 시도했지만 위의 텍스트보다 자세한 내용을 찾지 못했습니다 (이것은 일반적인 질문이라고 생각하므로 놀라운 것 같습니다). 내 주요 관심사는 다른 프로세스를 굶주리는 프로세스입니다. 그래서 선점이 VOLUNTARY와 함께 타이머 인터럽트에서 발생하는지 궁금합니다. 물론 더 많은 정보가 더 좋을 것입니다. 그래서 다른 유급 포인트가 무엇인지 궁금합니다.

+0

참조 http://stackoverflow.com/questions/5174955/what-is-voluntary-preemption –

+0

및 http://stackoverflow.com/questions/20769768/why-disabling-interrupts-disables-kernel-preemption을 참조하십시오. -and-how-spin-lock-disables-p? rq = 1 –

+0

감사합니다. 첫 번째 기사를 읽었지만, 여전히 "커널 일을하는 동안"막연한 인용문이 있습니다. IO를 예로 들었지만 불행하게도 다른 것들은 언급하지 않습니다. – blackghost

답변

4

나는 대답이 this link to a mailing list라고 믿습니다.

어느 것이 might_sleep()might_resched()이 자발적인 선점 포인트가됩니다. PREEMPT_VOLUNTARY를 활성화하면 함수 cond_resched()이 호출됩니다.

아니요. 자발적인 선점은 인터럽트에서 발생하지 않습니다. 이는 각 인터럽트를 검사하고 커널이 선매를 차단하지 않았다면 가장 우선 순위가 높은 작업으로 전환하는 전체 선점이됩니다.

+0

고마워, 그게 내가 찾고 있었던거야. – blackghost