Operating system 进程上下文与进程控制块

Operating system 进程上下文与进程控制块,operating-system,Operating System,我知道processcontext是在进程被抢占时存储的内容,它包含了以后重新启动进程所需的所有信息 我还知道过程控制块(PCB)包含过程的所有必要属性 那么,这是否意味着过程上下文是PCB的一部分?还是反过来呢?还是这些都是分开的?请帮助我理解其中一个在哪里结束,另一个在哪里开始——以及它们是如何一起使用的 过程边界究竟是什么 此外,在上下文切换过程中(如果有)PCB会受到怎样的影响?您所描述的内容在很大程度上取决于系统。通常,当我们谈论进程上下文[块]时,我们指的是进程的硬件状态。换言之,一

我知道
processcontext
是在进程被抢占时存储的内容,它包含了以后重新启动进程所需的所有信息

我还知道
过程控制块
PCB
)包含过程的所有必要属性

那么,这是否意味着
过程上下文
PCB
的一部分?还是反过来呢?还是这些都是分开的?请帮助我理解其中一个在哪里结束,另一个在哪里开始——以及它们是如何一起使用的

过程边界究竟是什么


此外,在上下文切换过程中(如果有)PCB会受到怎样的影响?

您所描述的内容在很大程度上取决于系统。通常,当我们谈论进程上下文[块]时,我们指的是进程的硬件状态。换言之,一种存储单元,用于保存硬件寄存器的值,这些寄存器的范围仅限于单个进程

进程控制块(或等效块)可以是操作系统想要的任何东西。例如,它可以包括用户名和进程配额。如果我们假定进程控制块包含操作系统维护的关于进程的所有内容,那么它要么包含进程上下文块,要么有到它的链接

让人更加困惑的是缩写词PCB。至少在过去,PCB指的是硬件进程上下文块。显然,一些教科书使用了相同的缩写来指代软件过程控制块(一本关于操作系统的特别差的教科书也使用了相同的缩写,这本书在黑板上引起了如此多的混乱和问题)


更让人困惑的是,我所研究的任何系统都没有教科书和维基百科中描述的过程控制块。我怀疑这个概念是教科书作者创造出来的,用来描述一个操作系统用来集体管理一个进程的各种数据结构

此外,在上下文切换过程中,PCB是如何受到影响的(如果有)

如果您指的是硬件进程上下文块,则在关闭之前,操作系统会执行一条保存进程上下文(或等效)指令,将进程的硬件寄存器保存到内存块中。某些处理器需要多条指令才能执行此操作。然后,操作系统执行加载进程上下文指令,该指令从另一个进程上下文块读取数据,并从另一个进程加载保存的寄存器。一旦执行这样的指令,进程就被切换

至于理论过程控制块中可能保存的内容,这可能是操作系统想要的任何内容。例如,统计信息。如果硬件PCB是软件过程控制块的一部分,则以上段落是答案的一部分

过程边界究竟是什么

这是一个复杂的问题,因为事实上,一个过程有多个边界

从内存的角度来看,在用户模式下,可以说进程的边界是它的用户模式地址空间

当流程改变模式时,这种情况就会改变。当进入内核模式时,进程实际上没有边界。它可以直接访问进程地址空间和共享系统地址空间,但也可以访问其他进程的地址空间(至少间接)


从磁盘的角度来看,可以说进程的边界是由文件系统施加的。

在上下文切换期间,进程控制块中只存储进程的状态(包括程序计数器等),以便在以后某个时间点使用此信息来恢复执行


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

“我所研究的任何系统都没有教科书和维基百科中所述的过程控制块。”-什么系统有硬件PCB?VAX是一个典型的例子。