在 task_struct ( Task ) 中,有一个成员变量 policy ,我们叫调度策略。它有以下几个定义

#define SCHED_NORMAL 0
#define SCHED_FIFO 1
#define SCHED_RR 2
#define SCHED_BATCH 3
#define SCHED_IDLE 5
#define SCHED_DEADLINE 6

配合调度策略的,还有我们刚才说的优先级,也在 task_struct 中。

int prio, static_prio, normal_prio;
unsigned int rt_priority;

优先级其实就是一个数值,对于实时进程,优先级的范围是 0~99;对于普通进程,优先级的范围是 100~139。数值越小,优先级越高。

对于实时进程,有如下几种调度策略:

而对于普通进程,有如下几种

policy 定义了具体的策略,而真正的运行依赖于 sched_class ,即调度策略的实现类,它有如下几种