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