调度程序不是线程,而是内核函数,因此无法实际“查看”调度程序正在做什么(我假设)。这些特定的内核部分对用户来说是不可见的(我再次假设)。
(附带问题:哪些其他部分对用户不可见并且不显示为线程/进程?)
如果我没有看到这些内核部分,我只是不知道如何想象它们。我的意思是,这些看不见的部分是如何以及在哪里执行的?谁告诉CPU在上下文切换后执行调度程序?谁“指示”CPU 这样做,以及如何“指示”CPU 这样做?
答案1
您的问题相当广泛,我将具体解决调度程序部分。
由于调度程序是一个函数,因此只要调用该函数,它就会运行。我链接到 Elixir 的原因是它允许您探索给定函数的调用站点(检查参考文献__schedule
)。例如,每当内核准备返回用户空间时(例如服务系统调用后),它检查是否已请求重新安排如果是,则调用调度程序。
所以基本上,调度程序会在内核需要的时候运行。有可能,只要内核有控制权,调度程序就可以运行,而且这种情况经常发生。
看Linux中的不同进程在单核PC上是如何被管理的?以及更多详细信息的链接。