Linux 进程调度简明总结

进程的优先级关系

从下图可以看出:

  1. 系统主要包括实时进程和普通进程。
  2. 实时进程优先级高于普通进程,实时进程会比普通进程更优先得到调度。
  3. nice 值可以转换为对应的优先级值,即nice 值 [-20,19] 对应于优先级值 [100,139]。
    在这里插入图片描述

实时进程调度(Realtime Process Scheduling)

Linux的实时属于软实时,并不对完成时间作保证。实时进程调度具有两种策略:

  1. SCHED_FIFO (first-in, first-out) 先入先出策略
  2. SCHED_RR (round-robin) 时间片轮转策略

相同点:

  1. 会顺序轮流执行。
  2. 只有更高优先级的实时进程可以抢占其处理器。
  3. 优先级都是静态的。

不同点:

  1. SCHED_FIFO 不存在时间片,会一直执行,直到它受阻塞或显示地释放处理器。
  2. SCHED_RR 具有时间片长度,耗尽时间片时,在同一优先级的其他实时进程被调度。

普通进程调度

系统运行的绝大部分进程都是普通进程,普通进程具有三种调度策略,最重要的是第一种。注意,交互进程也属于普通进程。

  1. SCHED_NORMAL
    完全公平调度策略(Completely Fair Scheduling, CFS),在 Linux 中称为 SCHED_NORMAL,在 POSIX 中称为 SCHED_OTHER,是最重要的调度策略。

    CFS 实现的基本原理是:

    1. 按照其优先级分配给相应比例的处理器时间
    2. 每个进程运行一段时间,然后选择运行最少的进程作为下一个运行进程
    3. 确保每个进程得到预先设定的处理器使用比。
  2. SCHED_BATCH
    也通过完全公平调度器来实现,主要用于非交互、CPU 使用密集的批处理进程。它们不会抢占CF调度器处理的另一个进程,因此不会干扰交互进程。

  3. SCHED_IDLE
    用于低优先级的任务,这些任务在系统中没有其他任务需要使用CPU时才会大量使用CPU。

参考:
《Linux 内核设计与实现》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

lylhw13_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值