PCB
在操作系统(OS)中,进程控制块(Process Control Block,简称 PCB)是一个至关重要的数据结构。它是操作系统核心中用于描述进程当前状态和控制进程运行的全部信息集合。
什么是 PCB?
PCB 是操作系统为每个进程专门定义的一个数据结构。你可以把它想象成每个进程在操作系统里的“身份证”或“档案”。
- 唯一性:系统中每一个进程都有且仅有一个 PCB。
- 存在性:PCB 随进程的创建而建立,随进程的撤销而删除。
- 可见性:PCB 是常驻内存的,只有操作系统内核可以访问和修改它,用户程序无法直接修改。
PCB 包含的主要内容:
- 进程标识符 (PID):每个进程的唯一编号。
- 进程当前状态:如运行态、就绪态、阻塞态等。
- 程序计数器 (PC):进程即将执行的下一条指令的地址。
- CPU 寄存器状态:当进程被切换时,保存当时的寄存器数值,以便下次恢复运行。
- CPU 调度信息:包括进程优先级、调度队列指针等。
- 内存管理信息:如页表、段表、内存地址限制等。
- I/O 状态和资源信息:已打开的文件列表、分配到的 I/O 设备等。
PCB 的作用是什么?
PCB 的核心作用是使一个在多道程序环境下不能独立运行的程序,成为一个能独立运行的基本单位。 具体表现在以下四个方面:
1. 作为进程存在的唯一标志
操作系统根据 PCB 来感知进程的存在。如果一个程序没有对应的 PCB,操作系统就不认为它是一个正在运行的进程。
2. 实现多任务的并发执行(现场保护)
当 CPU 从一个进程切换到另一个进程时,操作系统会将当前进程的执行进度(如寄存器值、下一条指令地址)存入其 PCB 中。当该进程重新获得 CPU 时,再从 PCB 中读出这些数据恢复现场。
没有 PCB,进程就无法在“暂停”后准确地从断点处继续运行。
3. 提供进程管理所需的信息
操作系统在调度进程、分配内存、处理中断时,都需要读取 PCB 中的数据。例如:
- 调度器查看 PCB 里的“优先级”来决定谁先运行。
- 内存管理器查看 PCB 里的“页表指针”来保护进程空间。
4. 实现进程同步与通信
PCB 中保存了进程的阻塞原因、信号量信息等,方便操作系统协调多个进程之间的协作和竞争关系。
不同OS类型
1. 单道批处理系统 (Single-Stream Batch System)
- 背景:解决人机矛盾(人录入慢,机器算得快)。
- 特点:
- 自动性:作业自动逐个运行,无需人工干预。
- 顺序性:先进入内存的先执行。
- 单道性:内存中始终只保持一道作业。
- 缺点:CPU资源浪费极大。如果作业在做I/O,CPU就只能闲置等待。
2. 多道批处理系统 (Multi-programmed Batch System)
- 关键词:资源利用率、吞吐量。
- 特点:
- 多道性:内存中存放多个程序。
- 宏观并行:看起来都在跑。
- 微观串行:在单CPU上,各程序交替占用CPU。
- 调度性:需要作业调度和进程调度。
- 优点:资源利用率高(CPU/内存/IO忙碌),系统吞吐量大。
- 缺点:无交互能力,用户提交作业后无法干预;周转时间长。
3. 分时操作系统 (Time-sharing System)
- 关键词:人机交互、响应时间、时间片轮转。
- 特点:
- 多路性:一台主机连接多个终端,多个用户同时使用。
- 独立性:用户感觉像是在独占机器。
- 及时性:用户请求能在很短时间内获得响应。
- 交互性:用户可以通过终端与系统直接对话。
- 核心机制:时间片(Time Slice)轮转。
- 主要目标:及时响应用户,而不是追求吞吐量。
4. 实时操作系统 (Real-time System)
- 关键词:及时性、可靠性、截止时间(Deadline)。
- 类型:
- 硬实时:必须在规定时间内完成(如导弹控制、核反应堆)。
- 软实时:偶尔错过截止时间影响不大(如视频播放、订票系统)。
- 特点:
- 响应及时:对外部信号的响应是第一优先级。
- 高可靠性:通常有冗余备份,不容许死机。
- 注意:实时性 > 分时性(实时系统要求更高)。
5. 网络/分布式/嵌入式操作系统(选记)
- 网络OS:负责网络通信和资源共享(如服务器上的OS)。
- 分布式OS:物理分散,逻辑统一。多个计算节点协同,用户感觉像是一台超级计算机(强调“透明性”)。
- 嵌入式OS:运行在特定硬件上(手机、微波炉、车载),代码精简,资源受限。
★ 期末必考:对比总结表(核心考点)
| 类型 | 目标 | 核心特征 | 交互性 | 评价指标 |
|---|---|---|---|---|
| 多道批处理 | 提高系统吞吐量 | 多道、调度、资源利用率 | 差(基本没交互) | 吞吐量、周转时间 |
| 分时系统 | 及时响应用户 | 时间片、多路、独立 | 强 | 响应时间 |
| 实时系统 | 任务必须按时完成 | 高精度、高可靠、确定性 | 中等 | 截止时间(Deadline) |
容易搞错
while(1) {
P()
…
V()
}