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

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

系列文章

文章概要
深入解读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)——调度与cgroupcgroup是Control Group的简称,用于资源划分和控制,其CPU和CPUSET子系统与调度息息相关

度与内核其他模块的关系

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

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

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

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

  • 1
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux 进程调度是指系统内核在多个进程之间调度 CPU 时间片的过程。它根据各种调度算法和优先级来决定每个进程获得 CPU 时间的顺序。常见的 Linux 调度算法有 Completely Fair Scheduler(CFS)和 Round Robin。 CFS 是 Linux 默认的调度算法,它根据每个进程的运行时间和优先级来决定调度顺序。 ### 回答2: Linux进程调度是操作系统对于进程的管理和分配资源的算法。在Linux系统中,进程是运行程序的实体,而进程调度则是决定进程运行顺序和时间的机制。 Linux采用了基于优先级的进程调度算法,通过动态地调整进程的优先级来决定进程被选中的概率。Linux内核中定义了两种进程调度策略:一种是实时调度策略,包括FIFO(先进先出)和RR(时间片轮转);另一种是非实时调度策略,包括CFS(完全公平调度)。 在实时调度策略中,FIFO按照进程进入系统的先后顺序进行调度,时间片由进程自行声明。而RR则将时间分成固定大小的时间片,每个进程只能运行一个时间片,然后切换到下一个进程。这两种调度策略主要适用于对实时性要求较高的应用。 而在非实时调度策略中,CFS采用了完全公平调度算法。CFS通过计算进程的虚拟运行时间,并将其与其他进程进行比较,从而确定下一个被调度的进程。CFS倾向于将CPU时间平均地分配给每个进程,并避免某个进程独占CPU资源。 另外,Linux还引入了时间片的概念。时间片是CPU分配给每个进程的最小时间单位,它的大小直接影响着进程的调度顺序。时间片越小,进程切换的频率就越高,系统的响应速度也会更快。 总的来说,Linux进程调度根据进程的优先级、类型和运行状态等因素,动态地为每个进程分配CPU资源,从而实现多任务的并发执行,提高系统的整体性能和响应速度。 ### 回答3: Linux进程调度是操作系统中重要的组成部分,它负责决定在多个进程同时运行时,每个进程被分配CPU的时间片长短和优先级。Linux通过采用时间片轮转和优先级调度的方式来管理进程。 时间片轮转调度算法是一种公平的调度方法,它将CPU的运行时间划分成较小的时间片,并按照轮转的方式分配给每个进程。当一个进程的时间片用完后,它会被放到就绪队列的末尾,等待下一次调度。这种调度方式保证了每个进程能够公平地使用CPU资源,避免了某些进程长时间占用CPU的情况。 Linux还采用了优先级调度算法,每个进程都有一个优先级值,数值越高表示优先级越高。在就绪队列中,调度器会将优先级最高的进程分配给CPU执行。如果两个进程的优先级相同,那么按照时间片轮转的方式进行调度。通过设定不同的进程优先级,可以实现进程的优先级控制和资源分配。 此外,Linux还引入了实时调度策略,包括实时先进先出和实时循环调度。实时调度算法是为了满足对实时任务有严格响应时间要求的场景,保证实时任务能够及时地被执行。 总结来说,Linux进程调度通过时间片轮转和优先级调度的方式,保证了进程的公平性和高优先级任务的及时响应能力。同时,引入实时调度策略,满足对实时任务的特殊需求。这些调度算法的运作机制和相互配合,为Linux操作系统的稳定性和高效性提供了重要的保障。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值