最近,我正在学习内核,并发现一个问题,该问题由谁控制进程控制块(PCB)?

内核还是进程本身?在不同的平台(windows/Linux)上是否有所不同?

到目前为止,我知道PCB是在硬件中控制的,但是我找不到正确的答案。

最佳答案

该过程完全是由操作系统内核专门创建和维护的软件抽象。进程控制块是代表OS中进程的数据结构。操作系统跟踪有关PCB中系统中运行的每个过程的所有必要信息。例如,在此特定进程中正在运行哪些线程,使用什么内存,哪个用户启动了该进程,以及它具有的特权。结果,每个操作系统都根据认为是一个过程的操作系统定义了自己的专用PCB格式。

一些OS实现进程(Windows/Linux),而另一些OS不实现(MS-DOS)。甚至有维护线程但不维护进程的操作系统。不同的操作系统定义了不同的PCB格式。例如,Linux将文件表实现为流程抽象的一部分,但是几乎所有微内核操作系统都不会将文件表视为流程的一部分。传统的UNIX系统不支持线程概念,因此没有跟踪进程中运行的线程。同时,现代Linux实现线程并跟踪PCB中的所有相关数据。所有操作系统共享的流程抽象的唯一永久部分是私有(private)虚拟地址空间。

再一次,PCB完全是软件抽象,而不是硬件抽象!我还没有看到处理器实现或直接支持流程。但是,在OS级别上实现流程抽象通常需要一些硬件支持。例如,支持虚拟内存和不同级别的特权。

关于process - 谁控制过程控制块(PCB)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28795024/

10-11 18:36