为什么它被称为上下文切换?为什么不进行交换或交换,导致资源相同

时间:2017-01-14 05:46:12

标签: operating-system context-switch

  

Context Switch的过程。在计算中,上下文切换是   存储和恢复状态的过程(更具体地说,是   进程或线程的执行上下文,以便执行   稍后从同一点恢复。

但如果是进程或线程 并且资源不共享,然后必须将其称为Process Swap或Thread Swap

2 个答案:

答案 0 :(得分:2)

它不是自己交换线程或处理自己。它交换存储在CPU中的执行上下文信息 - 各种CPU寄存器,标志位等。一个进程包含1个线程,每个线程操作CPU状态。上下文切换捕获当前正在运行的线程的CPU状态(上下文)并暂停它,然后交换另一个线程的状态,以便它可以恢复在之前停止的位置运行。

答案 1 :(得分:1)

请记住,在有线程之前很久就会将其称为流程上下文中的更改。由于我们在谈论历史,我忽略了线程。

使进程可执行需要加载寄存器。这组寄存器因系统而异,但通常包括:

  • 一般登记册
  • 处理器状态
  • 使用页面表注册

当进程不再是当前进程时,需要保存其寄存器值。当进程变为当前进程时,需要恢复其寄存器值。

几乎每个处理器都有一条指令执行上述每项任务,以允许以原子方式执行切换。

然后,处理器需要定义用于保存寄存器值的数据结构。无论出于何种原因,这个数据结构被称为"过程上下文块"或PCB(一些愚蠢的教科书使用PCB来描述其他不存在的东西)。

有人可能认为将其称为过程"上下文"是一个可爱的名字。这在英语中确实没有意义,但事情就是这样。

加载和保存的说明随后成为Load Process Context和Save Process Context的变种。

  

但如果它是进程或线程并且资源未共享则必须将其作为Process Swap或Thread Swap调用

交换是一个完全不同的概念。所以条款" swap"和#34;交换"已经被带走了。在分页之前的几天,整个进程被移动(交换)到磁盘。这就是为什么太监有一个"交换"分区 - 名称永远不会更新为"页面分区。"