Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )

Posted 韩曙亮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )相关的知识,希望对你有一定的参考价值。

文章目录





一、调度子系统组件模块



调度器 需要对 被调度的进程 进行 排序 调度管理 ,

进程管理过程需要 调度器组件模块 , 以及相关 算法 数据结构 来完成 , 如 : 执行队列 ;





二、主调度器、周期性调度器



CPU 通过 " 上下文切换 " 选择 " 主调度器 "" 周期性调度器 " ,


" 上下文切换 " 主要完成

  • 切换地址空间 ,
  • 切换寄存器 ,
  • 切换栈空间

工作 ;


" 主调度器 " 通过 调用 schedule() 方法 , 完成 进程的 调度 和 切换 ;


" 周期性调度器 " 根据 相应频率 , 自动调用 scheduler_tick() 函数 , 完成调度 , 这是根据 进程 运行时间 , 自动触发进程调度 ;





三、调度器类



主调度器 或 周期性调度器 根据 不同的 " 选择进程 " 选择不同的 调度器类 , 可选的调度类参考 【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 : 空闲调度类 ;

每个 调度器类 都负责 调度管理 若干进程 ,

调度器类 用于 判断 下一步要运行哪个进程 ,


以上是关于Linux 内核CFS 调度器 ④ ( 调度子系统组件模块 | 主调度器周期性调度器 | 调度器类 )的主要内容,如果未能解决你的问题,请参考以下文章

Linux 内核CFS 调度器 ⑥ ( CFS 调度器就绪队列 cfs_rq | Linux 内核调度实体 sched_entity | “ 红黑树 “ 数据结构 rb_root_cached )

Linux 内核CFS 调度器 ① ( CFS 完全公平调度器概念 | CFS 调度器虚拟时钟 Virtual Runtime 概念 | 四种进程优先级 | 五种调度类 )

Linux 内核CFS 调度器 ③ ( 计算进程 “ 虚拟运行时间 “ )

Linux(内核剖析):08---进程调度之Linux调度算法(调度器类公平调度(CFS))

Linux 内核CFS 调度器 ⑤ ( CFS 调度器类 fair_sched_class 源码 | next 赋值 | enqueue_task 赋值 | dequeue_task 赋值 )

linux内核源码分析之CFS调度