0%

Linux Scheduling Scheme

采用两种调度器

  1. 通用任务调度采用:Complete Fair Scheduler (CFS)
    • SCHED_OTHER
    • SCHED_BATCH
    • SCHED_IDLE
  2. 实时任务调度采用:Real-Time Scheduler (RT)
    • SCHED_FIFO
    • SCHED_RR

一共维护 140 个优先级:

  • CFS 使用 40 个优先级
  • RT 使用 100 个优先级

时钟中断(抢占式调度的基础)

  • 系统中断的频率: HZ
    • 在编译时静态确定,早期系统为 100,现在为 250 或 1000
    • 每秒产生 HZ 次时钟中断
  • HZ 对系统的影响
    • 越大: 计时精度更高,时钟中断处理开销越大
    • 例如,进程只剩余 2ms 的时间片,
      若 HZ 为 100,则可能 10ms 后 才退出执行;
      若 HZ 为 1000,则可精确在 2ms 后暂停执行。
  • jiffies: Linux中的全局变量
    • 标识系统启动至今的 tick 数量 (时钟中断)
    • 每秒 jiffies 增加 HZ
    • 系统启动至今的时间(秒数) = (jiffies - 预设偏移) / HZ
      • 预设偏移 offset 由内核在启动时设置