【发布时间】:2016-03-03 19:52:36
【问题描述】:
考虑一下:当一个任务/进程在单处理器系统上运行时,另一个任务必须等待轮到它,直到第一个任务被挂起或终止(取决于调度算法)。 内核还包含各种任务,这些任务使用同一个 CPU 来执行与操作系统相关的事情——比如调度、内存管理、响应系统调用等。
所以当内核调度一个特定的任务/进程给它 CPU 时间时,它会放弃对 CPU 的控制吗?即它会暂时停止吗?如果不是,当另一个进程在 CPU 上运行时,它如何继续运行以执行所有与操作系统相关的任务?调度器是否移到一边以提供下一个任务在 CPU 中,如果是这样,是什么使调度器返回继续进行进一步的调度活动?这个问题很相似,但它没有包含足够的细节 - How can kernel run all the time?
我对这部分感到困惑,我无法理解这是如何工作的。有人可以详细解释一下吗?如果你能用一个例子来解释它会很有帮助。
【问题讨论】:
-
你对中断了解多少? (如果你知道一点,想想它可能会回答你所有的问题)
-
取决于 CPU。单核、单线程 CPU 根本不会做任何事情。
-
不要认为内核总是在处理器上运行;需要时通过中断调用它。中断调用内核的特定例程,所以那时你可以说内核正在运行
标签: operating-system kernel scheduling