将CPU分配到上下文切换中的另一个进程到底意味着什么?

时间:2018-10-27 13:50:25

标签: operating-system context-switch

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

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

所以我想确定如果我是对的, 根据我的看法:

存储程序体系结构将指令存储到主存储器中, 这些说明与流程的文本部分相同。

从计算机组织的角度来看,仅由程序计数器决定要执行的指令。

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

  1. 流程1 的数据存储到 PCB 1
  2. 进程2 的数据(即 PCB 2 )加载到内核
  3. PCB 2 包括PC )更新所有寄存器值
  4. 因此,PC的地址将更新为另一个文本部分。 下图显示了我的想法。

Context Switch

所以,我可以说一下内核实际上是执行另一个进程的,它是进行上下文切换,并且基本上只是将程序计数器的地址更改为另一个进程的文本节地址吗?

2 个答案:

答案 0 :(得分:0)

“更改程序计数器”是所发生事情的底层硬件视图。

“分配CPU”是操作系统视图,用于跟踪系统资源所需执行的所有操作,当然,这涉及为现在要执行的代码加载程序计数器。

答案 1 :(得分:0)

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

大多数处理器定义一种结构,通常称为过程上下文块。 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?