首页 > 解决方案 > 在上下文切换中将 CPU 分配给另一个进程究竟意味着什么?

问题描述

我正在研究计算机组织和操作系统。一个让我很困惑的是,在上下文切换中将 CPU 分配给进程到底意味着什么?

术语“分配 CPU ”与我对上下文切换的想象不符。

所以我想确定如果我是对的,根据我的观点:

存储程序架构将指令存储到主存储器中,这些指令与进程的文本部分一样。

从计算机组织的角度来看,只有程序计数器决定执行哪条指令。

如果内核决定将分配从进程 1 切换到进程 2,即上下文切换,它会:

  1. Process 1的数据存储到PCB 1
  2. 将Process 2的数据,即PCB 2加载到内核中
  3. 从PCB 2更新所有寄存器值(包括 PC
  4. 然后PC的地址被更新到另一个文本部分。下图显示了我的想法。

上下文切换

那么,我可以说内核实际执行另一个进程是做什么的,它是否进行了上下文切换,基本上只是将程序计数器的地址更改为另一个进程的文本部分地址?

标签: operating-systemcontext-switch

解决方案


进程由其寄存器值定义。其中一些将是任何应用程序都可以更改的通用寄存器,而其他将是只能在内核模式下更改的系统寄存器。

大多数处理器定义了一个通常称为进程上下文块的结构。PBC 定义了定义过程状态的每个寄存器的存储位置。一些处理器需要多个类似 PCB 的结构作为我的保存浮点和其他类型的寄存器。

大多数处理器都有加载进程上下文和保存进程上下文指令(或它们的等效指令。这些指令通常只有一个操作数:PCB 的地址。

然后流程更改如下所示:

 SAVEPCTX    address_of_pcb_for_current_process
 LOADPCT     address_of_pcb_for_next_process ; after this, in a new process.
 REI ; Return to user mode.

在一些设计不佳的处理器上,这些步骤更加复杂。

“分配 CPU”一词与我对上下文切换的想象不符。

这一切都取决于你如何看待它。处理器总是需要运行某些东西(除非您有一些专为移动设备设计的处理器,可以轻松关闭)。那么上下文切换是将处理器分配给进程还是将进程分配给CPU?


推荐阅读