Linux 内核实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )
Posted 韩曙亮
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )相关的知识,希望对你有一定的参考价值。
文章目录
一、调度类 ( 停机调度类 | 限期调度类 | 实时调度类 | 公平调度类 | 空闲调度类 )
在 linux-5.6.18\\include\\linux\\sched.h
头文件中 task_struct
" 进程描述符 " 结构体 中定义的 sched_class
字段 ,
表示该进程所属的调度类 ;
const struct sched_class *sched_class;
源码地址 : linux-5.6.18\\include\\linux\\sched.h#680
上述可设置的调度类参考 【Linux 内核】调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 ) 博客 , 在 Linux 内核中 , sched_class
调度器 分为以下
5
5
5 种类型 :
- stop_sched_class : 停机调度类 ;
- dl_sched_class : 限期调度类 ;
- rt_sched_class : 实时调度类 ;
- fair_sched_class : 公平调度类 ;
- idle_sched_class : 空闲调度类 ;
调度类 优先级 由高到低排列为 : 停机调度类 > 限期调度类 > 实时调度类 > 公平调度类 > 空闲调度类
二、 实时调度类 rt_sched_class 源码
实时调度类 , 是 sched_class
调度类 结构体 类型 的 , 在 Linux 内核源码的 linux-5.6.18\\kernel\\sched\\rt.c
源文件中定义 ;
const struct sched_class rt_sched_class =
.next = &fair_sched_class,
.enqueue_task = enqueue_task_rt,
.dequeue_task = dequeue_task_rt,
.yield_task = yield_task_rt,
.check_preempt_curr = check_preempt_curr_rt,
.pick_next_task = pick_next_task_rt,
.put_prev_task = put_prev_task_rt,
.set_next_task = set_next_task_rt,
#ifdef CONFIG_SMP
.balance = balance_rt,
.select_task_rq = select_task_rq_rt,
.set_cpus_allowed = set_cpus_allowed_common,
.rq_online = rq_online_rt,
.rq_offline = rq_offline_rt,
.task_woken = task_woken_rt,
.switched_from = switched_from_rt,
#endif
.task_tick = task_tick_rt,
.get_rr_interval = get_rr_interval_rt,
.prio_changed = prio_changed_rt,
.switched_to = switched_to_rt,
.update_curr = update_curr_rt,
#ifdef CONFIG_UCLAMP_TASK
.uclamp_enabled = 1,
#endif
;
以上是关于Linux 内核实时调度类 ③ ( 实时调度类 rt_sched_class 源码 | 调度类 sched_class 源码 )的主要内容,如果未能解决你的问题,请参考以下文章
Linux 内核实时调度类 ① ( 进程分类 | 实时进程普通进程 | Linux 内核 SCHED_FIFOSCHED_RR 调度策略 | 实时调度实体 sched_rt_entity )
Linux 内核实时调度类 ⑦ ( 实时调度类核心函数源码分析 | dequeue_task_rt 函数 | 从执行队列中移除进程 )
Linux 内核调度器 ⑦ ( 调度器类型 | 停机调度类 stop_sched_class | 限期调度类 dl_sched_class | 实时调度类 | 公平调度类 | 空闲调度类 )
Linux 内核实时调度类 ② ( 实时调度实体 sched_rt_entity 源码分析 | run_listtimeoutwatchdog_stamptime_slice 字段 )
Linux 内核实时调度类 ④ ( 实时运行队列 rt_rq 源码分析 | 实时运行队列 rt_rq 结构体字段分析 | activert_nr_runningcurrnext 字段 )