process - 地址空间(进程的)和进程控制 block (PCB)在操作系统中如何相关?

标签 process operating-system virtual-address-space

如果我们谈论进程的地址空间,它就是虚拟地址范围,其中包括该特定进程的静态数据、堆栈和堆内存。然后来到进程控制 block (PCB),它是由操作系统为其管理的每个进程维护的数据结构,其中 PCB 包含许多关于进程的信息,如进程号、进程状态、程序计数器、打开文件列表、CPU 调度信息......等等。

现在这就是我感到困惑的地方,地址空间也是一个存储有关进程信息的内存,PCB 也可以完成类似的事情。那么这些是如何相互联系的。我无法在脑海中想象这一点。为什么我们同时存在这两个东西。 光是用PCB不就可以达到我们的目的吗?

最佳答案

进程地址空间是指进程正在使用的内存区域。它通常由堆、栈、初始化数据、未初始化数据和文本组成。一个进程主要有两个地址空间——逻辑地址空间和物理地址空间。 PCB 是一个驻留在内核中的结构,用于跟踪进程的状态。 PCB 包含的内容之一是内存信息。在典型的系统中,PCB 可能包含有关进程拥有的页面的信息。 为了回答您的问题,进程地址空间是建立在 PCB 和许多其他事物(例如页表)之上的想法。

关于process - 地址空间(进程的)和进程控制 block (PCB)在操作系统中如何相关?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55638806/

相关文章:

python - 如何在使用 os.listdir 时删除 .py 扩展名

architecture - 了解虚拟地址和虚拟地址空间

ruby - 如何使用 system() 杀死已生成子进程的进程?

docker - docker容器是如何存储在ram中并执行的?

java - 在执行jar之后,什么使Java进程保持 Activity 状态?

python - 如何在 os.popen() 中进行管道传输? - Python

c - 难以理解 fork() 和进程树

c++ - Windows中的虚拟地址空间

windows - 对 32 位 Windows 可执行文件使用/LARGEADDRESSAWARE 的缺点?

.net - 为什么没有 .NET Community Process?