操作系统 什么是上下文切换

什么是操作系统中的上下文切换

上下文切换涉及将进程的上下文或状态存储起来,以便在需要时可以重新加载,并且可以从之前的同一点继续执行。这是多任务操作系统的一个特性,允许多个进程共享一个 CPU 。

下面是一个演示上下文切换的图表示如下:

在上述图表中,初始时正在运行进程1。由于中断或系统调用,进程1被切换出去,进程2被切换进来。上下文切换涉及将进程1的状态保存到PCB1中,并从PCB2加载进程2的状态。一段时间后再次发生上下文切换,进程2被切换出去,重新切换回进程1。这涉及将进程2的状态保存到PCB2中,并从PCB1加载进程1的状态。

上下文切换的触发方式

上下文切换有三个主要的触发方式。如下所示:

  • 多任务: 在多任务环境中,将进程切换出CPU,以便运行另一个进程。保存旧进程的状态并加载新进程的状态。在抢占式系统中,进程可能会被调度程序切换出去。

  • 中断处理: 当发生中断时,硬件会切换部分上下文。这是自动发生的。只有一部分上下文会被改变,以减少处理中断所需的时间。

  • 用户模式和内核模式切换: 在操作系统中,当需要在用户模式和内核模式之间进行转换时,可能会发生上下文切换。

上下文切换的步骤

上下文切换的步骤如下:

  • 保存当前在CPU上运行的进程的上下文。更新进程控制块和其他重要字段。
  • 将上述进程的进程控制块移动到相关队列,如就绪队列、I/O队列等。
  • 选择一个新的进程进行执行。
  • 更新所选进程的进程控制块。包括将进程状态更新为运行。
  • 根据需要更新内存管理数据结构。
  • 当被加载到处理器上时,恢复先前运行的进程的上下文。这是通过加载进程控制块和寄存器的先前值来完成的。

上下文切换的开销

上下文切换会导致额外的开销,因为需要刷新TLB、在多个任务之间共享缓存、运行任务调度程序等。同一进程的两个线程之间的上下文切换比两个不同进程之间的上下文切换更快,因为线程具有相同的虚拟内存映射。因此不需要刷新TLB。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程