操作系统之进程上下文切换

进程(上下文)切换的步骤

  1. 检查是否可以进行进程切换(如:原语执行时不可,必须等待原语执行完后才能进行切换),具有原子性的系统程序段。
  2. 保存被切换进程的现场(如:程序计数器、寄存器),并移至合适的(就绪、阻塞)队列。
  3. 选取一个新进程。
  4. 恢复被选中进程的现场:装配该进程的正文,使其获得CPU控制权。

解释这些步骤:

  1. 检查条件:系统必须首先确定当前是否能够进行进程切换。如果一个进程正在执行原子操作,即不可中断的系统程序段,这时是不可以进行切换的。必须等到这个操作完成后,系统才能进行进程切换。

  2. 保存进程现场:系统会保存当前正在运行的进程的状态信息,包括程序计数器(指示接下来要执行哪一条指令的位置)和寄存器(存储指令执行中间结果的小型存储设备)的值。这个进程的状态信息保存后,该进程会被移动到适当的队列中,这个队列可能是就绪队列(等待CPU资源)或阻塞队列(等待某些事件的发生)。

  3. 选择新进程:系统将根据某种策略(如优先级、轮转等)从就绪队列中选择一个新的进程来执行。

  4. 恢复进程现场:系统为新选中的进程恢复其先前保存的状态信息,包括加载其正文(即程序代码)到内存中,设置程序计数器和寄存器,以便该进程可以从上一次停止的地方开始执行,并获得CPU的控制权,继续运行。


解释保护现场和恢复现场为什么不是一个进程

操作系统进行进程调度时,不保证立即恢复之前正在执行的进程(即“旧进程”)的状态。所有进程都是按照操作系统的调度策略来进行切换的,这个策略会考虑多个因素,如进程的优先级、CPU时间片、IO请求、进程同步和通信等。这是为了实现操作系统的多任务处理能力,允许多个进程公平且高效地共享CPU资源。

当操作系统从一个进程切换到另一个进程时,原来的进程会被暂停,并保存其上下文信息,新的进程的上下文会被加载并开始执行。哪个进程会被恢复执行,取决于它在就绪队列中的位置以及调度策略。因此,一个进程的执行可能会被分割成多个片段,而且执行顺序可能会因为系统的调度决策而变化。

在宏观上看,所有的进程都处于进程调度的流程中,操作系统负责决定哪个进程在什么时候运行,并且管理进程之间的切换。这就是为什么在多任务操作系统中,用户可能会感觉到所有程序似乎都是同时运行的,尽管在微观层面上,CPU在任何给定的时刻实际上只执行一个任务。

猜你喜欢

转载自blog.csdn.net/qq_65052774/article/details/134327675