谁在OS中安排调度程序 - 这不是一个鸡蛋和鸡蛋的场景吗?

问题描述 投票:12回答:2

谁安排调度程序?

这是创建的第一个任务以及如何创建第一个任务?它不需要任何资源或内存吗?不像鸡蛋和鸡蛋的情景?

调度程序不是一项任务吗?是否在每个时间片结束时获取CPU来检查哪个任务需要给CPU?

是否有任何良好的联系使得一个人能够深入思考和理解所有这些概念,而不是泄露出一些需要被遗忘的理论?

operating-system scheduling scheduler rtos
2个回答
14
投票

调度程序由

  • 一个(外部)事件,如中断,(磁盘完成,鼠标点击,计时器滴答)
  • 或者一个内部事件(例如一个线程的完成,它需要等待某个东西的线程的信令,或者它已经释放了一个资源的线程的信号,或者一个线程做一些违法的线程所引起的陷阱)被零除)

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

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

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

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


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.