2016-02-02 72 views
1

我知道Process Context是一个进程被抢占时存储的东西,包含所有必要的信息以便在稍后重新启动进程。进程上下文与进程控制块

我也知道Process Control BlockPCB)包含该过程的所有必要属性。

那么,这是否意味着Process ContextPCB的一部分?或者是周围的其他方式?或者这些都是分开的吗?请帮助我了解哪里结束,哪里开始 - 以及它们如何一起使用。

过程边界究竟是什么?

此外,在上下文切换期间如何影响PCB

回答

2

你所描述的很大程度上取决于系统。通常当谈论进程上下文[Block]时,一个是指进程的硬件状态。换言之,用于将硬件寄存器的值保存在一个进程范围内的内存位置。

过程控制块(或等同物)可以是操作系统希望的任何东西。例如,它可以包含用户名和流程配额。如果我们假设过程控制块包含操作系统维护过程的所有内容,它将包含进程上下文块或者有一个链接。

此处添加的混淆是首字母缩略词PCB。至少在过去的几天里,PCB会提到硬件进程上下文块。很明显,一些教科书使用相同的缩写来指代软件过程控制块(就像操作系统上的一本特别差的教科书一样,这个教科书在这个板上引起了很多混淆和疑问)。

进一步增加了混淆,没有我曾经工作过的系统有一个过程控制块,如在这样的教科书和维基百科中所描述的。我怀疑这个概念是创建教科书编写者来描述操作系统用来统一管理一个过程的各种数据结构。

另外,如何在上下文切换期间(如果有的话)影响PCB?

如果您指的是硬件进程上下文块,在切换操作系统之前执行一个SAVE PROCESS CONTEXT(或等同)指令,将进程的硬件寄存器保存到一块内存中。有些处理器需要多条指令来执行此操作。 OS然后执行LOAD PROCESS CONTEXT指令,该指令从另一个进程上下文块读取并从另一个进程加载保存的寄存器。只要这样的指令执行,过程就被切换了。关于在理论过程控制块中可以保存什么,这可能是操作系统想要的任何东西。例如统计信息。如果硬件PCB是软件过程控制块的一部分,则上面的段落是您答案的一部分。

究竟是一个过程边界?

这是一个加载的问题,因为实际上有一个进程的多个边界。

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

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

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

+0

“我工作过的系统没有这样的教科书和维基百科中描述的过程控制块。” - 那么什么系统有硬件PCB? – osgx

+0

VAX是一个典型的例子。 – user3344003

1

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

该操作状态数据被称为process contextprocess control block是包含过程标识数据,过程状态数据和过程控制数据的数据结构。