Linux调度分析(1)调度框架介绍
Linux调度是Linux内核进程管理的重要组成部分。它产生的原因是为了提高系统的利用率。当进程在等待某些资源时,可以暂时放弃运行当前CPU的占用,让其他线程执行,待资源ready后再唤醒该进程,从而提高利用率。
在进程调度过程中,需要确定如何选择下一个task运行以及下一个task运行多长时间,这是调度的核心。
本系列准备分析Linux调度框架,并分析内核中RT/CFS/EXT调度的实现。
下图为总结的linux调度框架:

这里对每个部分做简要的介绍:
- 调度用户态API。它是调度提供给用户态的系统调用,通过这些系统调用可以设置或获取线程的调度策略/调度亲和性/调度优先级等。
- 调度内核态API。它是调度提供给内核中其他模块的接口,其他模块可以通过这些接口如schedule()/wake_up_process()等实现被调度或唤醒操作。
- 调度core框架。它包括唤醒过程、调度过程、Tick时钟、负载跟踪、负载均衡以及idle等过程。总的来说,可以分为调度和负载均衡。
- 具体调度器的实例。当前Linux内核中调度器实例包括Deadline、RealTime、CFS、ext和idle等。
- CPUidle。当CPU上无可执行的线程时,可以选择idle线程执行,何时进入idle线程,进入哪个level的idle,这是CPUIDLE模块的任务。
- CPUFREQ。对于android系统,它关心的一个重要的指标是功耗,对于EAS调度,它会通过跟踪系统的负载对CPU的频率进行调节,达到节省功耗的目的。
- Hardware。调度相关的硬件为CPU和IPI中断。IPI中断通常用于通知或唤醒idle CPU,让其进行调度。

浙公网安备 33010602011771号