第 6 章 RHEL for Real Time 的调度策略


实时调度程序是决定要运行的线程的内核组件。每个线程都有一个关联的调度策略和静态调度优先级,称为 sched_priority。调度是抢占的,因此当具有较高静态优先级的线程准备好运行时,当前运行的线程将停止。然后,运行的线程会返回其静态优先级的 waitlist

所有 Linux 线程都有以下调度策略之一:

  • SCHED_OTHERSCHED_NORMAL :是默认策略。
  • SCHED_BATCH :与 SCHED_OTHER 类似,但使用增量情况。
  • SCHED_IDLE : 是优先级低于 SCHED_OTHER 的策略。
  • SCHED_FIFO : 是第一个 in 和 first out 实时策略。
  • SCHED_RR :是循环实时策略。
  • SCHED_DEADLINE: 是一种调度程序策略,根据作业期限对任务进行优先级排序。最早绝对截止时间的作业会首先运行。

6.1. 调度程序策略

实时线程的优先级高于标准线程。策略具有调度优先级值,范围从最小值 1 到最大值 99。

以下策略对实时至关重要:

  • SCHED_OTHERSCHED_NORMAL 策略

    这是 Linux 线程的默认调度策略。它有一个动态优先级,系统会根据线程的特征更改。SCHED_OTHER 线程在 -20 之间具有 nice 值,即最高优先级和 19,这是最低优先级。SCHED_OTHER 线程的默认 nice 值为 0。

  • SCHED_FIFO 策略

    带有 SCHED_FIFO 的线程会高于 SCHED_OTHER 任务。SCHED_FIFO 不使用 nice 值,而是使用 1 之间的固定优先级,即最低和 99 (最高)。优先级为 1 的 SCHED_FIFO 线程始终首先通过 SCHED_OTHER 线程进行调度。

  • SCHED_RR 策略

    SCHED_RR 策略与 SCHED_FIFO 策略类似。同等优先级的线程以轮循方式调度。SCHED_FIFOSCHED_RR 线程运行直到发生以下事件之一:

    • 线程进入睡眠或等待事件。
    • 较高优先级的实时线程可以运行。

      除非发生上述事件,否则线程在指定的处理器上无限期运行,而较低优先级线程保留在队列中等待运行。这可能导致系统服务线程处于常部,并阻止交换,并导致文件系统数据清除失败。

  • SCHED_DEADLINE 策略

    SCHED_DEADLINE 策略指定计时要求。它根据任务的截止时间调度每个任务。最早期限(EDF)调度的任务首先运行。

    内核需要 运行时的deadline …​period 为 true。所需选项之间的关系是 runtimedeadline …​period

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部