最近,在学习内核的过程中,我发现了一个问题:进程控制块(PCB)是谁控制的?
是内核还是进程本身?它在不同的平台(windows/Linux)上有区别吗?
到目前为止,我知道PCB是由硬件控制的,但我无法得到正确的答案。
发布于 2020-04-17 20:00:18
该过程完全是由操作系统内核专门创建和维护的软件抽象。进程控制块是表示OS中的进程的数据结构。OS在PCB中跟踪系统中运行的每个进程的所有必要信息。例如,哪些线程在这个特定的进程中运行,它使用什么内存,哪个用户启动了这个进程,它拥有哪些特权。因此,每个OS根据操作系统认为的进程来定义其私有的PCB格式。
一些OSes实现了进程(Windows/Linux),而另一些则不实现(MS-DOS)。甚至还有维护线程但不维护进程的操作系统。不同的操作系统定义了不同的PCB格式。例如,Linux实现了一个文件表作为进程抽象的一部分,但是几乎所有的微内核操作系统都不认为文件表是进程的一部分。传统UNIX系统不支持线程概念,因此没有跟踪进程中运行的线程。同时,现代Linux实现了线程,并跟踪PCB中所有相关数据。所有操作系统共享的进程抽象的唯一永久部分是私有虚拟地址空间。
再说一次,PCB完全是软件抽象,而不是硬件抽象!我还没有看到处理器实现或直接支持进程。然而,在操作系统级别上实现进程抽象通常需要一些硬件支持。例如,支持虚拟内存和不同级别的特权。
https://stackoverflow.com/questions/28795024
复制相似问题