进程上下文 vs 进程控制块

4
我知道进程上下文是一个在进程被抢占时存储的东西,包含了重新启动进程所需的所有必要信息。
我还知道进程控制块PCB)包含了进程的所有必要属性。
那么,这是否意味着进程上下文PCB的一部分?还是反过来?或者它们完全是分开的?请帮助我理解其中的区别,以及它们如何一起使用。
什么是进程边界?
另外,在上下文切换期间PCB会受到影响吗(如果有的话)?
2个回答

2
您描述的大多数情况取决于系统。通常,当谈论进程上下文[块]时,是指进程的硬件状态。换句话说,它是用于保存仅限于单个进程的硬件寄存器值的内存位置。
进程控制块(或等效物)可以是操作系统想要的任何内容。例如,它可以包括用户名称和进程配额。如果我们假设进程控制块包含操作系统维护的有关进程的所有内容,则它将包含进程上下文块或链接到它。
在这里增加混淆的是PCB缩写词。至少在旧日,PCB指的是硬件进程上下文块。显然,一些教科书使用相同的缩写来引用软件进程控制块(正如一本特别糟糕的操作系统教科书所做的那样,导致此论坛上出现了许多混淆和问题)。
进一步增加混淆的是,我所使用的系统没有像教科书和维基百科中描述的进程控制块。我怀疑这个概念是教科书作者创造的,以描述操作系统用于集体管理进程的各种数据结构。
如果您指的是硬件进程上下文块,在切换操作系统之前,操作系统会执行保存进程上下文(或等效)指令,将进程的硬件寄存器保存到内存块中。某些处理器需要多个指令来执行此操作。然后,操作系统执行加载进程上下文指令,从另一个进程上下文块读取并加载另一个进程的保存寄存器。一旦执行了这样的指令,进程就已经被切换。
至于理论进程控制块中可能保存的内容,可以是操作系统想要的任何内容。例如,统计信息。如果硬件PCB是软件进程控制块的一部分,则上面的段落是您答案的一部分。
这是一个充满挑战的问题,因为实际上有多个进程边界。
从内存角度来看,在用户模式下,可以说进程的边界是其用户模式地址空间。
当进程改变模式时,情况就会改变。当它进入内核模式时,进程实际上没有边界。它可以直接访问进程地址空间和共享系统地址空间,但也可以间接访问其他进程的地址空间。
从磁盘角度来看,可以说进程的边界是由文件系统强制实施的。

我所工作的任何系统都没有像教科书和维基百科中描述的进程控制块。那么,哪些系统有硬件 PCB? - osgx
VAX是一个经典的例子。 - user3344003

2

在上下文切换期间,只有进程的状态(包括程序计数器等)被存储在进程控制块中,以便稍后可以使用这些信息来恢复执行。

这个操作状态数据称为进程上下文,而进程控制块是一个包含进程标识数据、进程状态数据和进程控制数据的数据结构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接