根据维基百科和许多其他来源,
由于 PCB 包含流程的关键信息,因此必须将其保存在内存区域中,以防止正常用户访问。在某些操作系统中,PCB 放置在 内核堆栈该过程的一部分,因为这是一个方便的受保护位置。
这很有意义:当发生切换时,当前上下文必须保存在某个地方,而(内核)堆栈看起来是执行此操作的好地方。然而,塔南鲍姆表示
为了实现进程模型,操作系统维护一个表(结构数组),称为工艺表,每个进程一个条目。 (一些作者称这些条目为过程控制块.)
后来,Tanenbaum 提到进程上下文被保存到堆栈中。显然,进程表和堆栈是不同的野兽,现在我很困惑:堆栈和进程表之间有什么关系?
答案1
Tanenbaum 只是说有两种常见的方法来存储有关流程的信息。特定操作系统如何选择执行此操作(在某些内核堆栈上或在表/数组中)只是操作系统设计者可以使用的无数自由之一。
操作系统设计者甚至不必调用它们过程控制块。