深入解读Linux进程调度系列(总览)

日期 内核版本 CPU架构 作者
2019.04.06 Linux-4.4 PowerPC LoneHugo

系列文章

文章 概要
深入解读Linux进程调度系列(1)——调度的初始化 调度的初始化过程,包括调度与其他模块的关系解读

深入解读Linux进程调度系列(2)——调度类sched_class详解

调度的核心算法和数据结构调度类,对各个调度类做了详细的介绍,包括对调度算法的详细解读
深入解读Linux进程调度系列(3)——调度的执行过程 调度进入schedule或__schedule之后如何进行接下来的操作以完成进程的换入换出。这里包括选择下一个要调度的进程以及CPU运行队列rq(runable queue)的出入队过程分析
深入解读Linux进程调度系列(4)——调度与时钟中断 时钟中断(包括软中断和定时器)是调度的驱动器,尤其是在现代抢占内核设计中,这部分内容了解之后就知道系统如何周期性地刷新进程的状态,以驱动进程调度发生
深入解读Linux进程调度系列(5)——调度的入口 调度实际发生的时机,也就是正式的进行进程换入换出过程,而非仅仅更新进程状态标志
深入解读Linux进程调度系列(6)——抢占与非抢占 分析抢占(preempt)与非抢占的差别
深入解读Linux进程调度系列(7)——调度与CPU隔离 Isolcpus功能与调度之间的关系
深入解读Linux进程调度系列(8)——调度与cgroup cgroup是Control Group的简称,用于资源划分和控制,其CPU和CPUSET子系统与调度息息相关

度与内核其他模块的关系

调度模块是操作系统正常运行的基础核心模块,我们经常讲到或者听到的调度为狭义的调度概念,一般指的是以schedule为入口进行的进程上下文切换的过程,包括核心调度器CFS相关的内容。实际上调度的概念远不止于此,她作为Linux操作系统正常运行的基础核心,与很多个子模块相关联。

中断是操作系统进行外部事情相应以及内部异常等的处理方式,而调度也是在Linux的时钟事件驱动下完成的,中断又涉及硬件中断和软中断,即中断下半部,再加入定时器来辅助调度的复杂算法正常运行,确保调度的发生以及在正确的时机发生。另外,早期的内核为非抢占的,现在Linux也支持非抢占运行,这里的区别也是理解调度的重要方面。这些内容一起决定了调度的入口和实际发生的时机。随着操作系统的发展,资源控制、安全和虚拟化称为了重要的方向,cgroup就是其中很重要的一个产物,也是现在流行的虚拟化技术Docker的底层核心。cgroup支持多个子系统,其中CPU和CPUSET子系统与调度直接相关。另外需要关注的是CPU隔离,调度实际上就是对CPU资源的管理手段,CPU隔离天然地影响调度的执行路径。

由于笔者最近在调试PowerPC相关的芯片,因此相关的介绍会以此为例提取相关的内核源代码进行解读展示。

接下来的博文中会详细介绍调度与Linux各个模块之间的关系,具体的链接见上面的表格。

你可能感兴趣的:(Linux进程调度)