12

谁调度调度程序?

哪个是创建的第一个任务,第一个任务是如何创建的?它不需要任何资源或内存吗?不像鸡和蛋的场景吗?

调度程序不是任务吗?它是否在每个时间片结束时获取 CPU 以检查需要为哪个任务分配 CPU?

有没有什么好的环节可以让人深入思考和理解所有这些概念,而不是散布一些需要心生的理论?

4

2 回答 2

15

调度程序由

  • (外部)事件,例如中断、(磁盘完成、鼠标点击、计时器滴答)
  • 或内部事件(例如线程的完成,线程发出它需要等待某事的信号,或线程释放资源的信号,或由线程执行非法行为引起的陷阱,例如被零除)

简而言之,它由可能需要运行一组任务和/或重新评估这些任务的优先级的任何事件触发。调度程序决定接下来运行哪些任务,并将控制权传递给下一个任务。

通常,调度程序的这种“调度”是由与硬件中断相关的代码或与系统调用相关的代码引起的。

虽然您可以将调度程序视为一个真正的线程,但实际上它不需要以这种方式实现......因为它的执行优先级高于任何其他任务。复杂的操作系统实际上可能会留出一个特殊的线程,调度程序,并在调度程序获得控制权时将其标记为忙碌。这使它很漂亮,但是调度程序没有调度虚假线程

一个可以有多个调度器:最高​​优先级的一个(例如,我们刚刚描述的那个),以及其他真正是线程的调度器,并且像其他用户任务一样运行。这种较低优先级的调度程序往往用于管理间隔更长的操作,例如后台作业。

于 2010-02-12T08:38:42.187 回答
0

它通常由定时 CPU 中断定期调用

于 2018-02-28T07:22:50.157 回答