【操作系统】进程切换到底是怎么个过程?

时间:2025-03-30 07:28:29

首先,我们要了解,进程切换是个什么过程?

进程切换概念

  其实很简单,进程切换就是从正在运行的进程中,收回CPU的使用权利,交给下一个要运行的进程。

  实际上,因为被切换的进程下一次可能还要继续运行,所以这个过程又是被切换进程和将要运行进程的上下文切换,这个上下文就包括进程正在运行时的一些信息。

进程切换引起的方法

  知道进程切换是个什么概念后,我们需要知道,什么情况下回引起进程间的切换呢?
  一般来说,进程切换发生在中断/异常/系统调用处理过程中,一般有以下几种情况:

1、阻塞式系统调用、虚拟地址异常。

导致被中断进程进入等待态。

2、时间片中断、I/O中断后发现更改优先级进程。

导致被中断进程进入就绪态。

3、终止用系统调用、不能继续执行的异常。

导致被中断进程进入终止态。

  最常见的可能还是时间片中断,因为进程之间是并发执行的,在时间片使用完之后,进行进程间的切换还是比较常见的。

进程切换步骤

  知道大概的概念后,其实进程切换就简单的几步:
  - 保存之前运行的进程上下文
  - 调用准备运行的进程的上下文
  - CPU使用权交接

  首先,是保存之前运行进程的上下文,这里有几个关键的处理器中的寄存器,一个是PC寄存器,指向当前运行时的进程,一个是PSW,程序状态寄存器,记录计算的记过以及一些控制信息,然后就是处理器的堆栈指针SP(Stack Point)用来记录当前运行进程的PCB控制信息。

  在记录被切换的进程上下文时,要将PC寄存器,PSW以及其他相关寄存器的数据存入进程的私有堆栈中,以及SP存入PCB中。

  然后调用准备运行的进程上下文也是类似的过程,将PCB信息存入SP中,从即将运行的进程的私有堆栈中恢复各个处理器寄存器的数据。

  具体的一些过程还是能查阅一些资源或者书籍,能有更详细更底层的说明,会涉及到更多中断的知识。