考智达 AI 辅导

读完方法,马上刷题验证。

把资讯里的备考策略落到高频题、错题本和 AI 解析里,复习节奏更稳,提分路径更清楚。

登录后继续提分
← 返回资讯列表

考研408操作系统进程管理考点讲解

阅读 1

> 进程管理是操作系统的核心章节,也是408考试中分值最高、考查最频繁的模块。本章在历年408统考中通常占据 15-20分,选择题约2-4题,大题几乎每年必考 PV操作银行家算法。本章核心掌握:进程与线程、状态转换、进程调度算法、同步与互斥(PV操作)、死锁五大板块。

一、进程与线程——基础中的基础

1.1 进程的概念

进程(Process) 是程序的一次执行过程,是操作系统资源分配的基本单位

进程的组成(必考) :进程 = 程序段 + 数据段 + 进程控制块(PCB)

> PCB(Process Control Block) 是进程存在的唯一标志,操作系统通过PCB来记录每个进程的状态信息。PCB中记录了进程标识符、程序计数器、CPU寄存器、内存信息、打开文件列表等全部信息。

进程的特征

  • 动态性:进程是程序的执行过程,有生命周期
  • 并发性:多个进程可同时在内存中并发执行
  • 独立性:进程是独立运行的基本单位
  • 异步性:进程按各自独立的、不可预知的速度推进
  • 结构性:进程=程序段+数据段+PCB

1.2 进程与程序的区别(高频选择题)

| 对比项 | 程序 | 进程 |
|:---|:---|:---|
| 本质 | 静态的指令集合 | 动态的执行过程 |
| 生命周期 | 永久(存放在磁盘) | 临时(创建到消亡) |
| 组成 | 代码+数据 | 代码+数据+PCB |
| 一个程序对应 | 一个程序文件 | 可对应多个进程实例 |

1.3 进程与线程

线程(Thread) 是CPU调度的基本单位,同一进程内的多个线程共享进程的资源(内存空间、打开文件等)。

引入线程的好处(高频考点):

  • 线程切换开销远小于进程切换
  • 同一进程内线程间通信无需通过内核
  • 提高了并发度

> 进程是资源分配的单位,线程是CPU调度的单位——这是408选择题的经典考点。

1.4 进程的组织方式

操作系统通过PCB来组织进程,主要有两种方式:

  • 链接方式:将相同状态的PCB链接成队列(就绪队列、阻塞队列等)
  • 索引方式:建立索引表,按状态索引PCB

二、进程的状态与转换(选择题必考)

2.1 五大状态

```
┌──────────────────────────────────────────────┐
│ 创建状态 (New) │
└────────────────────┬─────────────────────────┘

┌──────────────────────────────────────────────┐
│ 就绪状态 (Ready) │
│ (已获得除CPU外所有资源) │
└────────┬───────────────────────┬─────────────┘
↓ ↑
┌─────────────────────┐ ┌─────────────────────┐
│ 运行状态 (Running) │───→│ 阻塞状态 (Blocked) │
└─────────────────────┘ └─────────────────────┘

┌──────────────────────────────────────────────┐
│ 终止状态 (Terminated) │
└──────────────────────────────────────────────┘
```

进程状态转换的三种主要情况

1. 就绪 → 运行:进程调度程序从就绪队列中选中一个进程,分配CPU
2. 运行 → 就绪:时间片用完(抢占)或更高优先级进程到达
3. 运行 → 阻塞:进程请求I/O、等待事件发生
4. 阻塞 → 就绪:I/O完成、等待的事件发生
5. 就绪/阻塞 → 终止:进程完成任务或被强制终止

> 💡 易错点:运行态进程不能直接转为阻塞态以外的状态?不对,运行→就绪、运行→阻塞、运行→终止都是合法转换。

三、进程控制——四大原语

进程控制由操作系统内核通过原语(Primitive) 实现。原语是不可中断的原子操作。

3.1 进程创建原语

触发事件:用户登录、作业调度、系统服务请求、父进程创建子进程。

创建过程
1. 申请空白PCB
2. 为新进程分配资源
3. 初始化PCB
4. 将新进程插入就绪队列

3.2 进程撤销原语

触发事件:进程正常结束、异常结束、被其他进程终止。

撤销过程
1. 从PCB集合中检索该进程
2. 回收其占用的所有资源
3. 撤销该进程的PCB
4. 若进程有子进程,还需撤销其子进程

3.3 进程阻塞原语

触发事件:进程请求I/O、等待某事件发生时,调用阻塞原语主动阻塞自己。

阻塞过程
1. 保存当前进程的CPU现场
2. 将进程状态改为阻塞态
3. 将其PCB插入相应阻塞队列
4. 调度其他进程运行

3.4 进程唤醒原语

触发事件:I/O完成、等待的事件发生时,由相关进程或中断唤醒。

唤醒过程
1. 从阻塞队列中找到该进程
2. 将状态改为就绪态
3. 将其PCB移入就绪队列

> 阻塞是进程主动行为,唤醒是被动行为——这是408选择题的常见考点。

四、进程调度(必考大题)

4.1 调度的三个层次

| 层次 | 别名 | 功能 |
|:---|:---|:---|
| 高级调度 | 长程调度、作业调度 | 从外存后备队列中选作业调入内存 |
| 中级调度 | 中程调度、内存调度 | 将进程换出到外存或换入内存 |
| 低级调度 | 短程调度、进程调度 | 从就绪队列中选进程分配CPU(频率最高) |

> 408考试中“进程调度”通常指低级调度

4.2 调度的时机

可调度时机

  • 进程从运行态转为阻塞态(如I/O请求)
  • 进程从运行态转为就绪态(时间片用完、被抢占)
  • 进程从阻塞态转为就绪态(I/O完成)
  • 进程终止

4.3 调度方式

| 方式 | 特点 | 典型算法 |
|:---|:---|:---|
| 非抢占式 | 进程一旦获得CPU,除非主动放弃,否则一直运行 | FCFS、SJF(非抢占版) |
| 抢占式 | 更高优先级进程可剥夺当前进程的CPU | RR、SRT、抢占式优先级 |

4.4 核心调度算法(计算题重点)

1. 先来先服务(FCFS)

  • 按进程到达顺序分配CPU
  • 非抢占式,简单公平
  • 缺点:平均等待时间长,不利于短作业(“护航效应”)

2. 短作业优先(SJF)

  • 优先服务估计运行时间最短的进程
  • 可抢占(SRT)或非抢占
  • 优点:平均等待时间最短
  • 缺点:需要预知运行时间,长作业可能饥饿

3. 优先级调度

  • 按优先级高低分配CPU
  • 静态优先级 vs 动态优先级
  • 缺点:低优先级进程可能饥饿 → 可用老化技术解决

4. 时间片轮转(RR)

  • 每个进程分配固定时间片,轮流执行
  • 时间片过大→退化为FCFS;过小→上下文切换开销过大
  • 分时系统的核心调度算法

5. 多级反馈队列调度(MFQ)

  • 设置多个优先级队列,优先级越高的队列时间片越短
  • 新进程进入最高优先级队列
  • 时间片用完未完成则降入下一级队列
  • 综合了优先级和RR的优点,是目前最常用的调度算法

4.5 调度算法的性能评价指标

| 指标 | 定义 |
|:---|:---|
| CPU利用率 | CPU忙碌时间/总时间 |
| 系统吞吐量 | 单位时间完成的进程数 |
| 周转时间 | 从提交到完成的总时间 |
| 带权周转时间 | 周转时间/运行时间 |
| 等待时间 | 进程在就绪队列中等待的时间总和 |
| 响应时间 | 从提交到首次响应的时间 |

五、进程同步与互斥(大题的绝对核心)

5.1 基本概念

  • 临界资源:一次仅允许一个进程使用的资源(如打印机、共享变量)
  • 临界区:访问临界资源的代码段
  • 同步:多个进程按特定顺序执行(直接制约关系)
  • 互斥:多个进程不能同时进入临界区(间接制约关系)

5.2 临界区访问的四个原则(选择题高频)

1. 空闲让进:临界区空闲时,允许一个进程进入
2. 忙则等待:临界区已被占用时,其他进程必须等待
3. 有限等待:进程不能无限等待,保证最终能进入
4. 让权等待:不能进入时主动释放CPU

5.3 信号量机制(PV操作)——大题绝对重点

信号量(Semaphore)是一种用于控制多个进程对共享资源访问的同步机制:

  • 二进制信号量:取值0或1,用于互斥
  • 计数信号量:可取值非负整数,用于资源计数

P操作(wait)
```
P(S):
S = S - 1
if S < 0:
将进程阻塞,插入等待队列
```

V操作(signal)
```
V(S):
S = S + 1
if S <= 0:
从等待队列唤醒一个进程
```

> 核心规律
> - 互斥:先P后V,P和V必须属于同一个进程,信号量初值一般为1
> - 同步:先V后P,V和P分属不同进程,信号量初值一般为0

5.4 经典同步问题(必须掌握)

1. 生产者-消费者问题

问题描述:多个生产者往缓冲区放数据,多个消费者从缓冲区取数据,缓冲区大小为n。

核心要点

  • 互斥信号量 mutex(初值1)保护缓冲区
  • 同步信号量 empty(初值n)表示空位数量
  • 同步信号量 full(初值0)表示已占位数量
  • P操作的顺序至关重要——先P(empty/full),再P(mutex)

2. 读者-写者问题

问题描述:多个读者可同时读,但写者独占访问。

核心要点

  • 读者计数 count 记录当前读者数
  • 读者进入时 count++(第一个读者要P(write))
  • 读者离开时 count--(最后一个读者要V(write))

3. 哲学家进餐问题

问题描述:5个哲学家围坐,每人左右各有一根筷子,需两根筷子才能吃饭。

解决方案

  • 方案一:最多允许4个哲学家同时就餐
  • 方案二:仅当左右筷子都可用时才拿起(破坏占有并等待)
  • 方案三:奇数号先拿左筷,偶数号先拿右筷(破坏循环等待)

4. 吸烟者问题

问题描述相对简单,但考查频率较低,了解即可。

5.5 PV操作大题答题模板

解题步骤
1. 分析进程:题干中有哪些进程?它们各自做什么?
2. 确定同步/互斥关系:哪些进程需要互斥?哪些需要同步?
3. 定义信号量:确定信号量个数、含义和初值
4. 写出伪代码:每个进程的P/V操作位置要准确
5. 检查死锁:连续多个P操作的地方是否会发生死锁(只有单个P操作不会死锁)

六、死锁(大题+选择题)

6.1 死锁的定义

死锁是指多个进程因竞争资源而造成的一种互相等待的僵局,若无外力作用,这些进程都将无法向前推进。

6.2 死锁的四个必要条件(缺一不可)

1. 互斥条件:资源一次只能分配给一个进程
2. 占有并等待:进程已占有资源,同时等待其他资源
3. 非抢占条件:已分配的资源不能被强行剥夺
4. 循环等待条件:进程间形成资源等待的循环链

6.3 死锁处理策略(408常考对比)

| 策略 | 方法 | 408考查形式 |
|:---|:---|:---|
| 死锁预防 | 破坏四个必要条件之一 | 选择题 |
| 死锁避免 | 银行家算法 | 大题必考 |
| 死锁检测与解除 | 资源分配图、进程撤销 | 选择题/大题 |

6.4 银行家算法(大题重点)

核心思想:在分配资源前,先判断分配后系统是否处于安全状态,只有安全才分配。

安全状态判断步骤
1. 计算每个进程的剩余需求 = 最大需求 - 已分配
2. 找出当前可用资源能满足的进程
3. 假设该进程运行完毕,释放其占用的全部资源,更新可用资源数
4. 重复上述步骤
5. 若所有进程均可完成 → 存在安全序列 → 系统安全
6. 若存在无法完成的进程 → 不安全状态 → 可能死锁

6.5 死锁的检测与解除

资源分配图:节点表示进程或资源,边表示请求或分配关系。图中存在环路不一定死锁,但死锁一定存在环路

死锁解除方法
1. 撤销进程(撤销全部死锁进程或逐个撤销)
2. 剥夺资源(从某些进程强行收回资源)
3. 进程回退(回退到死锁发生前的状态)

七、高频易错点与应试技巧

7.1 进程与线程易混淆点

| 易混点 | 正确理解 |
|:---|:---|
| 进程切换比线程切换开销大 | ✅ 正确(线程共享地址空间,无需切换页表) |
| 同一进程的多个线程共享全部资源 | ❌ 不共享栈(每个线程有自己的栈) |
| 进程是调度的基本单位 | ❌ 进程是资源分配的基本单位,线程是调度的基本单位 |

7.2 PV操作易错点

  • 信号量初值:互斥信号量初值=1;同步信号量初值=0;资源计数信号量初值=资源数量
  • P操作顺序:先P同步信号量,再P互斥信号量——顺序反了会死锁
  • V操作顺序:先V互斥信号量,再V同步信号量
  • 多个P操作检查死锁:连续多个P操作可能导致死锁

7.3 调度算法易错点

  • FCFS是非抢占式,SJF可以抢占也可以非抢占
  • RR的时间片大小影响性能——过小则上下文切换过多,过大则退化为FCFS
  • 多级反馈队列调度——新进程总是进入最高优先级队列,这是关键特征

7.4 银行家算法易错点

  • 安全状态 ≠ 没有死锁:安全状态一定不会死锁,但不安全状态不一定死锁
  • 银行家算法需要所有进程的最大需求信息,实际系统难以获取

八、备考建议

1. PV操作是重中之重:近10年408大题几乎每年必考PV操作,必须把生产者-消费者、读者-写者、哲学家进餐三大经典问题做熟。建议把王道上的所有PV大题做3遍以上。

2. 银行家算法:掌握安全序列的判断步骤,近10年至少考过3次大题。

3. 调度算法计算:FCFS、SJF、RR的平均周转时间和平均等待时间计算是选择题和大题的常客。

4. 死锁四个必要条件:选择题每年必考,必须精准记忆。

5. 进程状态转换图:画在草稿纸上,每天看一遍,确保选择题不丢分。

> 进程管理是操作系统的“心脏”,也是408考试中性价比最高的章节——投入时间与得分回报成正比。PV操作练到“看到题目就能想到信号量设计”的程度,银行家算法练到“3分钟内判断完安全序列”的速度,这两大块拿下了,进程管理的大题分数就稳了。坚持每天做1道PV操作题,一个月后你会发现——PV操作不过如此。