【问题标题】:Linux Kernel Preemption LevelsLinux 内核抢占级别
【发布时间】:2014-02-24 19:29:19
【问题描述】:

我想知道 PREEMPT_NONE 和 PREEMPT_VOLUNTARY 之间的区别是什么。根据文档,

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

但它没有提到这些要点是什么。我试着用谷歌搜索它,但我没有找到比上面的文字更多的细节(这似乎令人惊讶,因为我认为这将是一个常见问题)。我主要关心的是让其他进程挨饿的进程,所以我想知道在 VOLUNTARY 的定时器中断上是否发生抢占。当然,信息越多越好,所以我想知道其他抢占点可能是什么。

【问题讨论】:

标签: linux linux-kernel


【解决方案1】:

我相信this link to a mailing list 有答案。

might_sleep()might_resched()成为自愿抢占点。启用 PREEMPT_VOLUNTARY 使其调用函数cond_resched()

不,中断不会发生自愿抢占。那将是完全抢占,它会检查每个中断,如果内核没有标记为阻止抢占,它会切换到最高优先级的任务。

【讨论】:

  • 谢谢,这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-05
  • 2018-09-16
  • 2011-03-23
  • 1970-01-01
  • 2014-08-25
  • 2017-03-05
  • 1970-01-01
相关资源
最近更新 更多