前言
上篇文章 Linux scheduler 调度器 (一)介绍了内核调度器的调度类、各个子调度器、调度策略等,这篇文章我们介绍一下调度器的优先级和运行队列。
优先级
调度器的功能就是从众多可运行的任务中选择出一个最合适的任务来运行,这个选择的重要依据就是优先级。
各个子调度器的优先级
主调度器在选择任务时,会依次遍历串联着所有子调度器的链表,如果该子调度器对应的就绪队列中有可运行的任务,那就运行该子调度器对应的任务。所以一个任务的对应的子调度器首先决定了它被运行的先后顺序,各子调度器的优先级如下:

各个子调度器内部的调度顺序
stop_sched_class
该子调度器只管理migration线程,一个cpu上只有一个migration线程,所以调度器内部没有顺序可言。
dl_sched_class
在该子调度器对应的各个任务中,哪个任务的deadline的越近就优先运行哪个任务。
rt_sched_class
该子调度器根据任务的rt_priority 来把任务放入对应的rt就绪队列中,选择任务运行时也是按照优先级顺序依次查看各个rt就绪队列中是否有

本文深入探讨Linux调度器的优先级机制,包括各个子调度器的优先级顺序,如stop、dl、rt、fair和idle类,并详细解释任务优先级如何影响调度决策。此外,还介绍了任务优先级boost的情况以及运行队列的作用,阐述了任务如何在运行队列中排队等待执行。
最低0.47元/天 解锁文章
2030

被折叠的 条评论
为什么被折叠?



