Linux kernel Linux-抢占的原因

Linux kernel Linux-抢占的原因,linux-kernel,context-switch,preemption,Linux Kernel,Context Switch,Preemption,我想更新内核,以便在任务之间切换时执行更多操作,为此,我需要找到每次切换的原因 首先,我找不到调用schedule()的函数,当存在比当前任务优先级更高的任务时,它们需要切换,这会发生在哪里 其次,是否有任何理由让任务产生CPU,而不是退出或等待某件事情?有屈服函数吗 谢谢 检查此prio_changed_fair(类似,您可以参考其他调度类) 若任务处于无限循环中,它将不会屈服,但内核可以基于时间片调度另一个任务。是的,linux有屈服功能 谢谢我找到了屈服函数,我找不到prio_change

我想更新内核,以便在任务之间切换时执行更多操作,为此,我需要找到每次切换的原因

首先,我找不到调用schedule()的函数,当存在比当前任务优先级更高的任务时,它们需要切换,这会发生在哪里

其次,是否有任何理由让任务产生CPU,而不是退出或等待某件事情?有屈服函数吗

谢谢

  • 检查此prio_changed_fair(类似,您可以参考其他调度类)
  • 若任务处于无限循环中,它将不会屈服,但内核可以基于时间片调度另一个任务。是的,linux有屈服功能

  • 谢谢我找到了屈服函数,我找不到prio_changed_fair函数,你知道它出现在哪个文件中吗?感谢您使用的是哪个内核版本?。在最新的内核中,它位于kernel/sched/fair中。我使用的是一个非常旧的内核,2.4.18-14那个太旧了。在同一个文件中检查kernel/sched.c(schedule+行号608)和“goodness”函数