谁调度调度程序?
哪个是创建的第一个任务,第一个任务是如何创建的?它不需要任何资源或内存吗?不像鸡和蛋的场景吗?
调度程序不是任务吗?它是否在每个时间片结束时获取 CPU 以检查需要为哪个任务分配 CPU?
有没有什么好的环节可以让人深入思考和理解所有这些概念,而不是散布一些需要心生的理论?
谁调度调度程序?
哪个是创建的第一个任务,第一个任务是如何创建的?它不需要任何资源或内存吗?不像鸡和蛋的场景吗?
调度程序不是任务吗?它是否在每个时间片结束时获取 CPU 以检查需要为哪个任务分配 CPU?
有没有什么好的环节可以让人深入思考和理解所有这些概念,而不是散布一些需要心生的理论?
调度程序由
简而言之,它由可能需要运行一组任务和/或重新评估这些任务的优先级的任何事件触发。调度程序决定接下来运行哪些任务,并将控制权传递给下一个任务。
通常,调度程序的这种“调度”是由与硬件中断相关的代码或与系统调用相关的代码引起的。
虽然您可以将调度程序视为一个真正的线程,但实际上它不需要以这种方式实现......因为它的执行优先级高于任何其他任务。复杂的操作系统实际上可能会留出一个特殊的线程,即调度程序,并在调度程序获得控制权时将其标记为忙碌。这使它很漂亮,但是调度程序没有调度虚假线程
一个可以有多个调度器:最高优先级的一个(例如,我们刚刚描述的那个),以及其他真正是线程的调度器,并且像其他用户任务一样运行。这种较低优先级的调度程序往往用于管理间隔更长的操作,例如后台作业。
它通常由定时 CPU 中断定期调用