Google ghOSt 调度器分析(1)
调度器分析
- Google ghOSt 调度器分析
- 调度的一般过程
- 调度干预的基本思路
- *ghOSt* 调度器
- *agent* 与内核交互过程
Google ghOSt 调度器分析
调度的一般过程
调度过程大体分为三个部分:
- 任务排序
- 任务选择
- 任务上下文切换
因为一个 CPU 上只能运行一个任务,所以当需要让一个待运行的任务正式运行时需要通过 上下文切换 的方式将 CPU 等资源的控制权转让给该任务。而选择哪个待运行的任务去进行上下文切换则需要 任务选择 部分来进行决策——任务选择部分会根据调度策略在所有待运行的任务中来选择一个合适的任务。如果所有待执行的任务时无序排列的,那么在任务选择时会造成不必要的时间损失,所以为了能够高效的完成任务的选择,会提前对所有待执行的任务按照一定的规则进行 任务排序。
任务排序是为了优化任务的选择过程而提前对所有任务进行预管理的过程,所以任务排序的规则必须要与任务选择的规则相匹配。
调度干预的基本思路
干预调度的结果就是让我们需要运行的任务去优先运行,所以只要在任务选择的时候让我们的需要的任务胜出就可以通过正常的上下文切换来进行后续的工作。
如果要对调度进行干预,最简单的办法就是在任务选择时给出我们想要的运行的任务,而不去破坏原有的调度机制——因此这里我们对调度的过程进行了改进:
通常调度器的调度过程都发生