关于操作系统中PCB存储、映射及进程表的技术问询
进程相关疑问解答
我的理解
- 双击单线程可执行文件时,系统会为新进程创建进程控制块(PCB),并在主内存中为该进程分配空间;
- 短期调度器将进程调度至单处理器CPU;
- CPU执行进程,在阻塞前(如中断或I/O请求),会把CPU寄存器内容保存至PCB,随后进程被送入就绪队列。
疑问与解答
1. PCB实际存储在何处?
PCB始终存储在内核空间,用户模式完全无法访问。你提到的几种说法属于不同维度的描述:
- 内核栈仅用于临时保存进程切换时的CPU寄存器上下文,并非PCB的存储位置;
- 就绪队列、等待队列这类调度队列是内核维护的链表结构,链表节点仅包含指向对应PCB的指针,PCB本身是独立的内核内存块,被各类队列通过指针引用。
2. 操作系统如何建立进程与PCB的映射?如何知晓PCB关联进程的物理位置?
你的推测完全正确。PCB中包含进程内存管理的关键信息:
- 分段机制下的基址寄存器、限长寄存器,或分页机制下的页表指针,这些字段直接指向进程内存的物理地址范围;
- 操作系统以PID(进程ID)作为进程的唯一标识,维护PID到PCB内存地址的映射表。当需要定位进程物理内存时,只需通过PID找到对应PCB,读取其中的内存管理字段即可。
3. 进程表是什么?存储哪些信息?
进程表是内核维护的全局数据结构,用于统一管理系统内所有活跃进程。它的核心内容就是:
- 每个进程的PID;
- 指向该进程PCB的指针;
- 部分实现中会加入少量用于快速查询的进程状态字段(如就绪/阻塞),但核心功能还是建立PID与PCB的映射关系。你的猜测基本准确。
内容的提问来源于stack exchange,提问作者Piyush Raj
相关产品推荐
相关产品推荐

