当高优先级任务到来时如何调用调度程序



我在这里读到了关于调用调度程序的情况。但是,当高优先级任务来临时会发生什么呢?

高优先级任务的调度频率高于低优先级任务,但当高优先级任务到来时,它仍然需要等待,直到运行任务的数量结束。

优先级会根据过去的CPU使用情况进行更改和调整。

较长版本的

在Linux中,进程优先级是动态的。调度器跟踪进程在做什么,并定期调整它们的优先级;以这种方式,通过动态地增加优先级来增强长时间间隔被拒绝使用CPU的进程。相应地,长时间运行的进程会因优先级降低而受到惩罚。

Scheduler维护一组可在系统中运行的所有任务。在多优先级系统中,任务集通常支持优先级的概念。当一个高优先级任务到达系统时,它被放入按优先级排序的任务集中。

在内核中的某些点上,我们会检查与当前运行的进程相比,是否有更好的进程可供运行。这可能发生在时间片到期时,或者ISR完成时,或者锁解锁时,等等。寻找对switch()或_switch()或类似的调用。。。这是一个检查任务集并确定当前任务是否为最高prio的例程。

如果当前任务不是最高优先级的任务,则切换当前任务,并从任务集中获取最高优先级任务并安排运行。

最新更新