上下文切换涉及存储进程的上下文或状态,以便可以在需要时重新加载它,并可以从较早的同一点恢复执行。这是多任务操作系统的功能,并且允许单个CPU由多个进程共享。
演示上下文切换的图如下-
在上图中,最初进程1正在运行。由于中断或系统调用,进程1被关闭,进程2被接通。上下文切换涉及将过程1的状态保存到PCB1中,并从PCB2加载过程2的状态。一段时间后,再次发生上下文切换,进程2被关闭,进程1被再次打开。这涉及将过程2的状态保存到PCB2中,并从PCB1加载过程1的状态。
上下文切换有三个主要触发因素。这些给出如下-
多任务:在多任务环境中,一个进程被切换出CPU,因此可以运行另一个进程。保存旧进程的状态,并加载新进程的状态。在抢占式系统上,进程可以由调度程序切换出来。
中断处理:发生中断时,硬件会切换上下文的一部分。这会自动发生。仅更改某些上下文以最小化处理中断所需的时间。
用户和内核模式切换:当操作系统中需要在用户模式和内核模式之间进行转换时,可以进行上下文切换。
上下文切换涉及的步骤如下-
保存当前在CPU上运行的进程的上下文。更新过程控制块和其他重要字段。
将上述过程的过程控制块移至相关队列,例如就绪队列,I / O队列等。
选择一个新的执行过程。
更新所选过程的过程控制块。这包括将流程状态更新为正在运行。
根据需要更新内存管理数据结构。
还原先前在处理器上再次加载时正在运行的进程的上下文。这是通过加载过程控制块和寄存器的先前值来完成的。
由于TLB刷新,在多个任务之间共享缓存,运行任务调度程序等,上下文切换导致开销成本。由于线程具有相同的虚拟内存映射,因此在同一进程的两个线程之间进行上下文切换比在两个不同进程之间进行上下文切换要快。因此,不需要TLB冲洗。