内核如何在进程之间进行上下文切换?

operating systemhardwaresoftware & coding更新于 2026/2/8 14:52:17

每当需要在用户模式和内核模式之间进行事务时,上下文切换并非必要;简单的模式转换不属于上下文切换。因为根据操作系统的不同,上下文切换也可能发生。

让我们看看上下文切换的主要步骤

  • CPU 寄存器的值通常保存在时钟中断发生之前正在运行的进程的进程表中。

  • 接下来的运行需要从进程中加载​​寄存器,并由 CPU 调度程序选择。

考虑一个多程序单处理器系统,上下文切换频繁发生,因此所有进程似乎都在并发运行。如果一个进程有多个线程,操作系统会使用上下文切换技术来调度线程,使它们似乎并行执行。

如果线程是在内核级别实现的,情况就是这样。线程也可以在运行时库的用户级实现。因为操作系统不提供线程调度,程序员有责任为每个线程提供足够高的 CPU 频率,以便进程中的所有线程都能正常执行。

进程之间的上下文切换非常昂贵。在切换进程之前,操作系统必须保存其进程控制块 (PCB)。

PCB 包含以下信息 −

  • 进程状态。

  • 程序计数器,PC。

  • 不同寄存器的值。

  • 进程的 CPU 调度信息。

  • 有关进程的内存管理信息。

  • 此进程的可能的记帐信息。

  • 进程的 I/O 状态信息。

每当操作系统保存当前正在执行的进程的 PCB 时,就会加载必须在 CPU 上运行的下一个进程的 PCB。这是一项繁重的任务,需要更多时间。

让我们看看下面的图表,了解进程之间如何进行上下文切换 −



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部