操作系统中“调度延迟”和“上下文切换”的区别

2025 年 5 月 1 日 | 阅读 6 分钟

引言

操作系统在硬件资源管理和软硬件通信方面发挥着关键作用。进程管理是 OS 的核心功能之一,包括进程调度、管理 CPU 时间以及确保进程完全执行。

在此背景下,有两个重要概念分别称为“调度延迟” (Dispatch Latency) 和“上下文切换” (Context Switch)。两者都与 CPU 调度和进程执行有关,但它们的意思和含义不同。本文汇集了关于定义操作系统调度延迟和上下文切换,它们之间的区别以及重要性的数据。

OS 中的调度延迟是什么?

调度延迟是指在调度程序选择进程执行后,操作系统停止一个进程并启动另一个进程执行所需的时间。从进程准备好执行到实际在处理器上开始执行之间的时间延迟称为上下文切换。

换句话说,它表示调度程序将一个进程从运行状态带到上下文,并将另一个进程带入运行状态所需的时间。这是一项开销,在上下文切换期间,系统无法执行任何有用的工作。调度程序在进程之间切换上下文,将一个进程从运行状态转移出去,并将另一个进程置于运行状态所需的时间,一些硬件提供了每 CPU 多组寄存器,这允许同时加载各种上下文。上下文切换是一项开销,系统在此期间不执行任何有用的工作。

一些硬件为每个 CPU 提供了多组寄存器,然后可以将一个上下文加载到其中的几个寄存器中。

关键组件

调度延迟的组成部分包括:

  1. 调度时间:调度程序选择要执行的进程所需的时间。
  2. 上下文切换时间:这个有趣的术语指的是保存我们要抛弃的旧进程状态并恢复将要提供服务的新进程状态所需的时间。
  3. 中断处理时间:如果发生中断,操作系统必须在执行新调度的进程之前处理中断。

调度延迟的原因

可能影响调度延迟的一些因素包括:

  1. 中断处理:这可能会导致调度过程延迟。
  2. 调度程序开销:CPU 调度程序选择下一个要运行的进程所需的时间。
  3. 抢占式调度:当一个更高优先级的进程到达时进行调度。操作系统切换到它可能需要一些时间,因此称为抢占式调度。
  4. 内核模式操作:一些 OS 函数和系统调用可能会延迟引用它们的进程的调度。
  5. 系统负载:由于系统负载过重而频繁的上下文切换可能会导致调度延迟增加。
  6. 先进先出 (FIFO)、轮转 (Round Robin)、优先级调度:这些是不同的调度算法,它们将影响进程是否能被快速选中。
  7. 硬件效率:更快的处理器和优化的硬件可以减少调度延迟。

调度延迟的意义

  1. 如果 RTOS 是 实时操作系统 (RTOS),它尤其会影响系统的响应能力。
  2. 更快的调度会导致高优先级进程立即运行。
  3. 适用于工业自动化和医疗系统中的即时响应应用。

示例

考虑将实时操作系统 (RTOS) 部署用于汽车中的安全气囊部署系统。当系统感应到碰撞时,操作系统需要立即运行安全气囊部署进程。这对于任何延迟(调度延迟)都至关重要。因此,RTOS 会尽量减少调度延迟,因为它试图减少线程调度与线程数据到达之间的时间。

OS 中的上下文切换是什么?

上下文交换是一种存储和加载旧进程的已保存状态并检索新进程运行所需状态的方法。PCB(进程控制块)代表进程的上下文。

在上下文切换时,每当进程的属性(如寄存器、指针、程序计数器等)存储在 PCB 中并保存到内核内存中的每个进程堆栈中时,新进程就会占据其位置/替换它们,或者如果进程是新的,甚至会创建一个新的 PCB。

上下文切换提供了高级别的多任务处理,甚至有助于提高操作系统的利用率。

上下文切换的关键组成部分

上下文切换的组成部分包括:

  1. 保存当前状态:保存 CPU 寄存器、程序计数器和其他进程相关信息。
  2. 加载新状态:加载另一个进程的保存状态,以便从停止的地方继续执行。
  3. 更新调度信息:操作系统更新其内部结构以指示切换。

上下文切换的类型

  1. 进程级上下文切换:当操作系统在不同进程之间切换时。
  2. 线程级上下文切换:这是在同一进程的线程之间进行切换,我们称之为线程级上下文切换。
  3. 中断上下文切换:操作系统将应用程序从运行状态切换到中断上下文,反之亦然(有时)。

影响上下文切换时间的因素

  1. 寄存器数量:寄存器越多,保存和恢复状态所需的时间就越长。
  2. CPU 架构:一些架构提供了优化上下文切换的功能。
  3. 缓存性能:这也意味着如果缓存数据丢失,重新加载所需数据可能需要很长时间。
  4. 上下文切换开销:经过良好优化的内核例程可以减少上下文切换的开销。

示例

例如,一个多任务操作系统运行多个应用程序,如 网页浏览器、媒体播放器和文字处理器。在从媒体播放器切换到文字处理器时会发生上下文切换;媒体播放器的状态被保存,而文字处理器的状态被加载。

调度延迟和上下文切换的区别

特点调度延迟上下文切换
定义调度程序选择进程后,开始执行已调度进程所需的时间。保存先前正在运行的进程或线程状态的过程。
调度程序加载新进程的初始或先前保存的状态。
主要组成部分包括调度时间、上下文切换时间和中断处理。保存/加载 CPU 寄存器、更新内存映射和管理缓存。
范围它包括执行开始前的进程调度延迟。它涉及进程或线程切换之间的 CPU 状态管理。
性能影响在实时系统中,高的调度延迟会使系统无响应。频繁的上下文切换可能由于 CPU 开销和缓存无效而降低性能。
优化策略有效的调度算法、基于优先级的任务选择和中断最小化。最小化不必要的并行任务,使其更倾向于 CPU 亲和性,并修复内核对资源的处理。
示例安全气囊部署系统和工业自动化都是实时系统的类型,在这些系统中,快速执行至关重要。在个人计算机上切换应用程序是通用操作系统多任务处理环境的一个例子。

对系统性能的影响

  1. 调度延迟的影响
    • 关键应用程序(如实时系统)中的延迟对高调度延迟非常敏感。
    • 通过使用低效的算法或调度开销,调度延迟可能会增加。
    • 系统(如 RTOS)会尝试尽快调度时间关键操作。
  2. 上下文切换的影响
    • 保存和加载状态的切换开销可能会限制 CPU 在频繁需求下的效率。
    • 缓存无效和增加的内存访问会降低性能。
    • 延迟上下文切换优化了现代 OS 的开销(即最小开销)。

优化策略

  1. 减少调度延迟
    • 使用优先级调度:如果优先级设置很高,则意味着进程延迟最小。
    • 抢占式调度:允许关键任务抢占不那么关键的任务。
    • 提高响应能力:减少中断开销使其响应更快。
  2. 减少上下文切换开销
    • 减少上下文切换:更快的线程创建减少了改变上下文所花费的时间。
    • 处理器亲和性:保持进程在同一 CPU 上运行,从而最大限度地减少缓存丢失。
    • 优化内核设计:轻量级的内核操作有助于优化 内核设计。

结论

调度延迟和上下文切换都是操作系统中关于性能和效率的重要概念。首先,调度延迟是指在调度任务后开始执行的时间,以及进程能多快获得 CPU 时间。上下文切换与任务之间保存和恢复 CPU 状态所需的时间有关。上下文切换使多任务处理更加流畅。

在调度算法、硬件能力方面损失一些性能或减少不必要的进程切换会有很大帮助。这些方面需要针对实时系统和高性能计算以及通用操作系统进行优化。通过了解它们的差异并优化它们的行为,可以获得更好、更具响应性和更高效的系统。