Appearance
进程组成与 PCB 组织方式
🎯 一句话结论:进程由 PCB + 程序 + 数据 三部分组成,是系统资源分配和调度的基本单位。
进程组成:PCB(进程控制块,唯一标识)、程序(描述做什么)、数据(执行所需数据)。
PCB 组织方式:
| 方式 | 说明 |
|---|---|
| 链接方式 | PCB 通过链表链接,同一状态的 PCB 链接成一个队列 |
| 索引方式 | 同状态的 PCB 集中记录在索引表中,通过索引表查找 |
| 顺序方式 | PCB 按顺序连续存放(不适用于动态变化) |
⚠️ 三种方式中索引方式最常见:为每种进程状态建立索引表,PCB 记录在索引表中。
三态模型
三态模型(必须熟练掌握转换):
运行 → 就绪(时间片到)
运行 → 阻塞(等待某事件)
阻塞 → 就绪(等待的事件发生)
就绪 → 运行(被调度)
三态模型包括:就绪、运行、阻塞。
五态模型有两种版本,考场上以题目选项为准:
版本 包含状态 来源 软考版 三态 + 挂起 + 终止 软考部分真题采用此说法 标准教材版 三态 + 新建(New) + 终止(Exit) 王道/汤小丹等教材,对应七态再加挂起 ⚠️ 考场策略:如果选项同时出现"新建"和"挂起",选含"新建"的为五态;如果只有"挂起"没有"新建",则五态选"挂起"。新建态在实际 OS 中确实存在,但软考部分题目将其归为创建过程而非独立状态。
进程基本状态不包括挂起态(挂起态是七态模型中的扩展状态)。
七态模型 = 五态(标准教材版) + 就绪挂起 + 阻塞挂起:
新建 → 就绪 ↔ 运行 → 终止 ↕ ↕ 就绪挂起 阻塞挂起 ← 阻塞挂起(Suspend)指进程被从内存换出到外存,释放内存空间。就绪挂起(就绪但换出)、阻塞挂起(阻塞且换出),当事件发生或被激活时回到就绪态。
前趋图
详见:架构师-备考 综合知识-系统基础-操作系统-前趋图与资源图
进程同步与互斥
- 临界资源:各进程间需要以互斥方式对其进行访问的资源
- 临界区:进程中对临界资源实施操作的那段程序
- 互斥:同一时间只能由一个任务单独使用临界资源,使用时加锁(如多进程共享打印机)
- 同步:多个任务可并发执行,有速度差异,需要等待协调。目标是确保进程间正确协作。
信号量与 PV 操作
🎯 一句话结论:互斥信号量初值 = 1;同步信号量初值 = 共享资源数量。P 减一申请,V 加一释放。
信号量:
- 互斥信号量:对临界资源互斥访问,初值为 1
- 同步信号量:对共享资源的访问控制,初值一般是共享资源的数量
P/V 操作:
- P 操作(申请资源):S = S - 1,若 S ≥ 0 则继续执行;若 S < 0 则阻塞,插入阻塞队列
- V 操作(释放资源):S = S + 1,若 S > 0 则继续执行;若 S ≤ 0 则从阻塞队列唤醒一个进程
信号量值含义与前趋图 PV 规则
前驱图 PV 规则,是同步信号量下的行为。
🎯 一句话结论:S < 0 时,|S| = 等待进程数。前趋图中信号量数 = 有向边数,初值全 0。
信号量值含义:
- S ≥ 0:信号量的值表示可用的资源数
- S < 0:信号量的绝对值 = 等待该资源的进程数
- 例:S 初值为 3,当前值为 -1 → 有 1 个进程在等待
前趋图 PV 操作规则:
- 信号量数量 = 前趋图中的有向边数量
- 所有信号量初值均为 0
- 前驱进程完成后执行 V 操作(发出信号)
- 后继进程开始前执行 P 操作(等待信号)
💡 核心理解:信号量 = 一条私有消息通道
关键洞察:每个信号量本质上就是一个独立的消息通道(定向通知),每条有向边配备一个专属信号量,仅供该边对应的后继进程消费。
为什么互斥信号量只需要一个?
互斥信号量保护的是共享资源,不管谁来用,大家争同一个锁:
你 ──→ [打印机] ←── 室友
锁 (S=1)所有人对同一个信号量做 P/V,因为争的是同一把锁。一个锁就够了。
为什么同步信号量需要 = 有向边数?
同步信号量传递的是定向通知 — 前驱要明确告诉"某个特定的后继"可以开始了。每条边是一个独立的依赖关系,每个依赖需要一个专属的信号量:
┌─ S12 ──→ P2
P1 ────┤
└─ S13 ──→ P3如果 P1→P2 和 P1→P3 共用同一个信号量 S:
- P1 做完 V(S) 一次,S=1
- P2 和 P3 谁先跑 P(S) 谁抢到,不能保证发给正确的人
- ⚠️ V 操作不知道要唤醒谁,它只是唤醒一个排队的人
用两个信号量 S12 和 S13,各管各的通道:
- P1 V(S12) → 只通知 P2
- P1 V(S13) → 只通知 P3
- P2 只能 P(S12),P3 只能 P(S13),各收各的信号,永不串线
一句话总结
| 互斥信号量 | 同步信号量 | |
|---|---|---|
| 模型 | 一把锁,大家争 | 多条通道,各收各的信 |
| 数量 | 1(保护一个资源) | = 有向边数(每条边一个通道) |
| 初值 | 1(没人锁) | 0(信号还没发出) |
| 操作者 | 同进程内 P→V | 前驱 V,后继 P,跨两个进程 |
生产者-消费者问题
🎯 一句话结论:三个信号量 — 互斥 S0 + 同步 S1(空闲位)+ 同步 S2(商品数)。
生产者-消费者问题:三个信号量 — 互斥信号量 S0(仓库使用权,初值 1),同步信号量 S1(空闲位置数),同步信号量 S2(商品个数)。
- ⚠️ 不能同时操作缓冲区(即不要求同时操作),但一次只有一个进程操作缓冲区
- ⚠️ 不能向满缓冲区存产品,不能从空缓冲区取产品
进程调度
三级调度:
- 高级调度(作业调度):决定哪个后备作业调入系统,成为就绪进程。⚠️ 不存在于分时和实时操作系统
- 中级调度(对换调度):决定交换区中哪个就绪进程调入内存
- 低级调度(进程调度):决定内存中哪个就绪进程占用 CPU,最活跃、影响最大。⚠️ 不涉及进程在内存与外存之间交换
调度算法:
| 算法 | 特点 |
|---|---|
| 先来先服务 FCFS | 先到达先分配 CPU,用于宏观调度 |
| 时间片轮转 | 每个进程分配相同时间片轮流使用 CPU,用于微观调度 |
| 优先级调度 | 优先级大的先分配 CPU |
| 多级反馈调度 | 时间片轮转 + 优先级结合,多级队列不同优先级和时间片 |
调度方式:可剥夺(高优先级进程可强行抢占 CPU)vs 不可剥夺(必须等当前进程自动释放 CPU)。
死锁
🎯 一句话结论:死锁四条件 — 互斥、占有等待、不可剥夺、环路等待。最小资源数 = n × (R-1) + 1。
四个必要条件:资源互斥、占有并等待、不可剥夺、环路等待。⚠️ "资源共享"不是死锁必要条件。
处理策略:
- 死锁预防:破坏四个条件之一
- 死锁避免:银行家算法,提前计算安全序列,不安全则不分配
- 死锁检测:定时运行检测程序
- 死锁解除:强制剥夺资源、撤销进程
死锁资源计算:n 个进程各需 R 个资源,发生死锁的最大资源数 = n × (R-1),不发生死锁的最小资源数 = n × (R-1) + 1。
练习题
某系统中有3个并发进程竞争资源R。假设每个进程都需要5个R,那么最少需要有(。)个R,才能保证系统不会发生死锁。
- A.10
- B.11
- C.12
- D.13
答案与解析
- 至少需要资源数=并发进程数×(每个进程所需资源数-1)+1=3×(5-1)+1=13。本题选D。
线程 vs 进程
🎯 一句话结论:线程是调度基本单位,进程是资源分配基本单位。同进程线程共享资源,切换开销小。
引入线程原因:进程创建、撤销和切换时空开销大,限制了并发程度。
| 进程 | 线程 | |
|---|---|---|
| 资源 | 独立分配资源的单位 | 基本不拥有资源(仅 PC、寄存器、栈) |
| 调度 | 传统上可独立调度 | 调度和分配的基本单位 |
| 共享 | 进程间资源独立 | 同进程线程共享进程全部资源 |
| 开销 | 创建/切换开销大 | 创建/切换开销小 |
练习题
[Q10] 进程状态/PCB
某计算机系统中的进程管理采用三态模型,那么下图所示的PCB(进程控制块)的组织方式采用(),图中( )。

- A. 顺序方式
- B. 链接方式
- C. 索引方式
- D. Hash
答案与解析
答案:C
解析:索引方式为每种进程状态建立索引表,PCB记录在索引表中。
[Q55] 进程状态转换
下列选项中会导致进程从阻塞态变为就绪态的是( )。
- A. 进程等待的用户输入到达
- B. 进程关闭文件句柄
- C. 进程的时间片用完
- D. 进程执行了exit()系统调用
答案与解析
答案:A
解析:阻塞→就绪:等待的事件发生(如I/O完成、用户输入到达)。
[Q73] 进程状态模型
在操作系统中,进程状态模型包括三态模型和五态模型。关于这两种模型,以下说法正确的是( )。
- A. 三态模型包括就绪、运行和阻塞三种状态
- B. 五态模型比三态模型多了挂起和终止两种状态
- C. 三态模型适用于所有类型的操作系统,而五态模型仅适用于分时系统
- D. 五态模型中不存在就绪状态
答案与解析
答案:A
解析:三态=就绪+运行+阻塞;五态多了挂起和终止。A和B都正确,A更基础。
[Q74] 进程基本状态
在操作系统中,进程的基本状态不包括以下哪一种( )。
- A. 运行态
- B. 就绪态
- C. 阻塞态
- D. 挂起态
答案与解析
答案:D
解析:挂起态是五态模型中的扩展状态,不属于基本三态。
[Q102] 进程组成
(本题)是系统进行资源分配和调度的基本单位,通过其物理实体被操作系统所感知,物理实体分为( )三部分。
- A. 进程
- B. 线程
- C. 纤程
- D. 管程
答案与解析
答案:A
解析:进程是资源分配和调度的基本单位。
[Q103] 进程组成
( )是系统进行资源分配和调度的基本单位,通过其物理实体被操作系统所感知,物理实体分为(本题)三部分。
- A. 代码、文档和配置
- B. 程序、数据集合和控制块
- C. 进程栈、系统资源和时间片
- D. 线程组、信号量和资源池
答案与解析
答案:B
解析:进程物理实体 = 程序 + 数据 + PCB(控制块)。
[Q104] 互斥
有多个进程需要同时访问一台打印机,这时迫切需要解决( )问题。
- A. 同步
- B. 互斥
- C. 通信
- D. 性能
答案与解析
答案:B
解析:打印机是临界资源,一次只能一个进程使用 → 互斥问题。
[Q46] PV操作
在PV操作中,P操作的主要作用是( )。
- A. 释放资源并唤醒等待进程
- B. 申请资源,若不足则阻塞进程
- C. 检查资源是否可用
- D. 增加信号量的值
答案与解析
答案:B
解析:P=申请(减1),不足则阻塞;V=释放(加1),有等待者则唤醒。
[Q70] 互斥信号量
在使用信号量实现进程互斥时,以下哪个描述是正确的( )。
- A. 互斥信号量的初始值应设置为0
- B. P操作会增加信号量的值
- C. V操作在进入临界区之前执行
- D. 互斥信号量的初始值通常设置为1
答案与解析
答案:D
解析:互斥信号量初值=1(资源可用),P在进入临界区前,V在退出后。
[Q71] P操作过程
关于P操作(申请资源)的执行过程,以下描述正确的是( )。
- A. 将信号量S的值加1,然后判断S是否大于0
- B. 将信号量S的值减1,如果S小于0则进程继续执行
- C. 将信号量S的值减1,如果S大于等于0则进程继续执行
- D. 将信号量S的值减1,不进行任何判断直接继续执行
答案与解析
答案:C
解析:P操作:S=S-1,若S≥0继续;若S<0阻塞。
[Q54] 信号量值含义
若信号量S的初始值为3,当前值为-1,则表示( )个进程正在等待该资源。
- A. 0
- B. 1
- C. 2
- D. 3
答案与解析
答案:B
解析:S<0时,|S|=等待进程数。|-1|=1个进程在等待。
这道题考的是 信号量值的含义,规则很简单:
信号量 S 的含义:
- S ≥ 0 → S 表示可用资源数
- S < 0 → |S| 表示等待该资源的进程数
逐步推演:
| 步骤 | S 值变化 | 说明 |
|---|---|---|
| 初始 | S = 3 | 3 个资源可用 |
| 进程 A 执行 P 操作 | S = 2 | 占用 1 个,剩 2 个可用 |
| 进程 B 执行 P 操作 | S = 1 | 占用 2 个,剩 1 个可用 |
| 进程 C 执行 P 操作 | S = 0 | 占用 3 个,资源刚好用完 |
| 进程 D 执行 P 操作 | S = -1 | 资源已用完,D 进入等待队列 |
当 S = -1:
- 绝对值 |-1| = 1 → 有 1 个进程在等待(进程 D)
- 同时意味着 3 个资源全被占用
所以选 B(1 个进程等待)
[Q66] 前趋图PV规则
在使用信号量实现前驱关系时,以下哪个步骤是正确的( )。
- A. 设置的信号量数量等于进程数
- B. 所有信号量的初始值设为1
- C. 进程执行前进行V操作,执行后进行P操作
- D. 信号量数量等于有向边数量,初始值为0
答案与解析
答案:D
解析:信号量数=有向边数,初值全0,前驱执行后V,后继执行前P。
[Q68] 生产者-消费者
在生产者-消费者问题中,以下哪个选项不属于其基本规则或约束( )。
- A. 不能向满缓冲区存产品
- B. 不能向空缓冲区取产品
- C. 每个时刻仅允许1个生产者或消费者存或取1个产品
- D. 生产者和消费者必须同时操作缓冲区
答案与解析
答案:D
解析:不要求同时操作,但一次只有一个进程操作缓冲区。
[Q69] 同步目的
在操作系统中,同步问题的主要目的是( )。
- A. 提高系统的运行速度
- B. 确保进程间的正确协作
- C. 减少内存占用
- D. 增加系统的并发度
答案与解析
答案:B
解析:同步=协调速度差异,确保进程间正确协作。
[Q97] 并发性
在单CPU环境下,操作系统的并发性是指( )。
- A. 多个程序在同一时刻同时执行
- B. 宏观上多个程序同时运行,微观上时间片轮转执行
- C. 多个程序必须按照严格的顺序依次执行
- D. 同一时刻可以执行多个特权指令
答案与解析
答案:B
解析:单CPU并发=宏观并行、微观串行(时间片轮转)。
[Q64] 死锁条件
在操作系统中,以下哪个条件不是产生死锁的必要条件( )。
- A. 资源共享
- B. 保持和等待
- C. 不可剥夺
- D. 环路等待
答案与解析
答案:A
解析:死锁四条件:互斥、占有等待、不可剥夺、环路等待。"资源共享"不是。
死锁四个必要条件
| 条件 | 含义 |
|---|---|
| 互斥 | 资源一次只能给一个进程用 |
| 保持和等待 | 进程占着资源不放,还等别的资源 |
| 不可剥夺 | 资源不能被强行抢走 |
| 环路等待 | 进程间形成循环等待链 |
| 选 A 的原因 |
A. 资源共享 ❌ — 不是必要条件
- 死锁需要的是互斥(资源不能共享),而不是共享
- 如果一个资源可以共享(比如只读文件),多个进程同时用不会死锁
- 所以「资源共享」恰恰是避免死锁的方向,不是产生死锁的条件
[Q65] 死锁互斥
在操作系统中,关于死锁产生的必要条件之一"互斥",以下描述最准确的是( )。
- A. 互斥指多个进程可以同时访问临界资源
- B. 互斥指临界资源在一段时间内只能被一个进程占用,其他进程需等待
- C. 互斥指进程间不能共享任何资源
- D. 互斥指进程可以随时释放已占用的资源
答案与解析
答案:B
解析:互斥=临界资源独占,一段时间内只能一个进程使用。
[Q47] 死锁资源计算
若系统中有5个进程共享同类资源,每个进程最多需要3个资源,则系统最少需提供( )个资源才能避免死锁。
- A. 10
- B. 11
- C. 12
- D. 15
答案与解析
答案:B
解析:最小不锁资源 = n×(R-1)+1 = 5×(3-1)+1 = 11。
[Q9] 并发+死锁
若一个单处理器的计算机系统中同时存在3个并发进程,则同一时刻允许占用处理器的进程数( );如果这3个进程都要求使用2个互斥资源R,那么系统不产生死锁的最少的R资源数为( )个。
- A. 至少为1个
- B. 至少为3个
- C. 最多为1个
- D. 最多为3个
答案与解析
答案:C(最多1个)
解析:单处理器同一时刻最多1个进程占用CPU。死锁最小资源=3×(2-1)+1=4,选项未给出第二问。
[Q72] 调度
在操作系统中,哪种调度不涉及进程在内存和外存之间的交换( )。
- A. 高级调度
- B. 中级调度
- C. 低级调度
- D. 实时调度
答案与解析
答案:C
解析:低级调度=CPU分配,不涉及内存-外存交换;中级调度才涉及。
这道题选 C(低级调度) ✅。实时调度 不是三级调度中的概念,是两个不同的维度。
三级调度回顾
| 调度级别 | 别名 | 做什么 | 是否涉及内外存交换 |
|---|---|---|---|
| 高级调度 | 作业调度 | 决定哪个后备作业调入内存成为就绪进程 | ✅ 是 |
| 中级调度 | 对换调度 | 决定交换区中哪个进程换入内存 | ✅ 是 |
| 低级调度 | 进程调度 | 决定内存中哪个就绪进程拿到 CPU | ❌ 否 |
低级调度只看谁上 CPU,进程已经在内存里了,不涉及搬进搬出。所以选 C。
实时调度是调度算法/策略的分类,而不是一个独立的调度级别。
三级调度是按发生的位置和时机分的(作业层→交换层→CPU 层),而实时调度是按调度目标分的:
调度策略分类:
├── 先来先服务(FCFS)
├── 时间片轮转(RR)
├── 优先级调度
├── 多级反馈队列
└── 实时调度(保证任务在截止时间前完成)
├── 速率单调调度(RMS)— 静态优先级
└── 最早截止时间优先(EDF)— 动态优先级实时调度关注的是能不能按时完成,它在三级调度中属于低级调度这个层面 — 决定当前哪个进程上 CPU,只是选谁的标准变了(看截止时间而非优先级/时间片)。
高级/中级/低级 = 在哪个阶段做调度 实时调度 = 用什么标准来做调度(按时完成优先)
所以题目中的 D 选项其实是一个分类错误 — 它和 A/B/C 不在同一个维度上。但标准答案还是 C(低级调度),因为它是唯一明确不涉及内外存交换的
[Q76] 调度
在操作系统中,哪种调度不存在于分时和实时操作系统中( )。
- A. 高级调度
- B. 中级调度
- C. 低级调度
- D. 进程调度
答案与解析
答案:A
解析:高级调度(作业调度)在分时/实时OS中不存在,因为作业直接进入内存。
⭐ 经典题目 — PV 互斥信号量典型应用(多进程共享变量+分支中易漏 V(S))
[Q1] PV互斥信号量
某航空公司机票销售系统有n个售票点,该系统为每个售票点创建一个进程Pi(i=1,2,…,n)管理机票销售。假设Tj(j=1,2,…,m)单元存放某日某航班的机票剩余票数,Temp为Pi 进程的临时工作单元,x 为某用户的订票张数。
初始化时系统应将信号量S赋值为(请作答此空)。Pi进程的工作流程如下图所示,若用P操作和V操作实现进程间的同步与互斥,则图中空(a)、空(b)和空(c)处应分别填入(2)。

- A. 0
- B. 1
- C. 2
- D. 3
答案与解析
答案:B
解析:多个进程互斥访问共享变量Tj→互斥信号量初值=1。进入临界区前P(S),退出后V(S)。
第二问:
根据典型售票流程,逻辑是:
开始
↓
读用户订票数 x
↓
(a) ______ ← 申请锁
↓
读剩余票数 Tj
↓
┌─ x ≤ Tj ? ──→ 否 ──→ (c) ______ ──→ 结束(票不够)
↓ 是
Tj = Tj - x
↓
写回 Tj
↓
(b) ______ ← 释放锁
↓
输出机票
↓
结束答案模式:
| 空位 | 操作 | 理由 |
|---|---|---|
| (a) | P(S) | 进入临界区前申请锁,防止多个进程同时操作 Tj |
| (b) | V(S) | 正常修改完 Tj 后释放锁 |
| (c) | V(S) | 票不够时也要释放锁!否则其他售票点再也无法卖票(死锁) |
所以如果选项是:
- A. P(S)、V(S)、P(S)
- B. V(S)、P(S)、V(S)
- C. P(S)、V(S)、V(S)
- D. V(S)、V(S)、P(S)
选 C ✅ — (a)=P(S), (b)=V(S), (c)=V(S)
⚠️ (c) 容易漏:很多人在票不够的分支直接结束,忘了 V(S) 释放锁,导致整个系统死锁。
[Q75] 进程状态模型
在操作系统中,关于进程状态模型的描述,以下哪项是正确的( )。
- A. 进程状态模型只包括三态模型
- B. 进程状态模型只包括五态模型
- C. 进程状态模型包括三态模型和五态模型
- D. 进程状态模型不包括三态模型和五态模型
答案与解析
答案:C
解析:进程状态模型包含三态(就绪/运行/阻塞)和五态(+挂起/终止)两种模型。