系统架构师备考:操作系统基础 | 进程管理
一、进程与线程
1. 核心定义
-
进程:操作系统资源分配的最小单位,拥有独立内存空间、文件资源,是资源调度的基本单元。进程的组成:进程控制块PCB(唯一标志)、程序(描述进程要做什么)、数据(存放进程执行时所需数据)。
-
线程:操作系统CPU调度与执行的最小单位,无独立资源,共享所属进程全部资源,切换开销极低。
简单总结:进程管资源,线程管执行。
2. 进程与线程完整对比
|
对比维度 |
进程(Process) |
线程(Thread) |
|---|---|---|
|
资源归属 |
独立内存、独立文件句柄、独占系统资源 |
共享进程资源,无独立地址空间 |
|
切换开销 |
大(需刷新页表、上下文、缓存) |
极小(仅切换栈与寄存器) |
|
通信方式 |
IPC通信(管道、消息队列、共享内存、信号量) |
直接读写共享变量,无需复杂通信机制 |
|
容错性 |
进程崩溃相互隔离,不影响其他进程 |
单线程异常崩溃,整个进程直接终止 |
|
创建销毁 |
成本高、速度慢 |
成本低、速度快,支持高并发 |
3. 共享与非共享资源
-
同一进程线程共享:代码段、全局变量、打开的文件、进程ID、工作目录、定时器
-
线程私有不共享:线程栈、局部变量、寄存器、线程优先级、栈指针
二、进程状态图(三态+五态模型)
1. 进程三态基础模型

三种状态定义
-
就绪态:资源全部就绪,仅等待CPU调度
-
运行态:占用CPU,正在执行代码指令
-
阻塞态(等待态):等待IO、资源、信号,主动放弃CPU
标准流转图
就绪态 ——(CPU调度选中)——> 运行态 运行态 ——(时间片用完/被抢占)——> 就绪态 运行态 ——(等待IO/资源)——> 阻塞态 阻塞态 ——(事件完成/资源就绪)——> 就绪态
三态绝对禁忌
-
❌ 阻塞态 → 运行态(必须先转为就绪态排队)
-
❌ 就绪态 → 阻塞态(未运行进程不会主动等待资源)
2. 进程五态进阶模型(含挂起|难点)

三态模型无法解决内存不足问题,五态模型新增挂起机制(中级内存调度),将闲置进程换出至外存,释放内存资源。
五大状态
就绪、运行、阻塞、就绪挂起(静止就绪)、阻塞挂起(静止阻塞)
五态完整流转图
// 内存常规流转 就绪态 ——(调度选中)——> 运行态 运行态 ——(时间片到)——> 就绪态 运行态 ——(IO等待)——> 阻塞态 阻塞态 ——(事件完成)——> 就绪态 // 内存紧张:进程换出外存(挂起) 就绪态 ——(内存不足)——> 就绪挂起 阻塞态 ——(内存不足)——> 阻塞挂起 // 内存充足:进程调入内存(激活) 就绪挂起 ——(内存空闲)——> 就绪态 // 唯一特殊跨态转换 阻塞挂起 ——(事件在外存完成)——> 就绪挂起
-
就绪挂起:进程具备运行条件,驻留外存,缺内存资源
-
阻塞挂起:进程等待事件,同时驻留外存
-
所有挂起态进程无法直接进入运行态
-
特殊转换:阻塞挂起 → 就绪挂起(无需调入内存,事件直接完成)
三、进程资源图

1.什么是进程资源图
进程资源图是用于直观表示进程与资源之间分配、请求关系的图形工具,是操作系统死锁章节必考内容,可快速判断系统是否发生死锁。
图形符号规范:
- 圆形:代表进程 P图中
P1、P2、P3均为进程节点。 -
矩形:代表资源 R矩形内部圆球数量 = 该类资源总数量
-
示例:
R1框内 2 个圆球 → 系统共有 2 个 R1 资源; -
R2框内 3 个圆球 → 系统共有 3 个 R2 资源。
-
-
资源→进程 的箭头(分配边)含义:该资源已分配给对应进程。例:
R1指向P1= 1 份 R1 资源分配给 P1。 -
进程→资源 的箭头(请求边)含义:该进程还需要申请一份对应资源才能继续执行。例:
P1指向R2= P1 需要请求 1 个 R2 资源。
2.阻塞节点判断
- 阻塞节点定义:进程当前申请的资源已全部分配完毕、无剩余可用资源,进程无法拿到资源,进入阻塞等待状态。文中示例:
P2为阻塞节点。 - 非阻塞节点:进程申请的资源仍有剩余空闲资源,系统可分配资源,进程能继续运行。文中示例:
P1、P3为非阻塞节点。
四、信号量

P操作:申请资源,S=S-1,若S>=0,则执行P操作的进程继续执行;若S<0,则置该进程为阻塞状态( 因为无可用资源),并将其插入阻塞队列。
V操作:释放资源,S=S+1,若S>0,代表此时资源有空余,没有阻塞的进程,则该进程继续执行;若 S<=0,代表此时线程在被阻塞,所以需要从阻塞状态唤醒一个进程,并将其插入就绪队列(此时因为缺 少资源被P操作阻塞的进程可以继续执行),然后执行V操作的进程继续。
五、前驱图
前趋图:用来表示哪些任务可以并行执行,哪些任务之间有顺序关系,具体如下图:

图中,ABC可以并行执行,但是必须ABC都执行完后,才能执行D,这就确定了两点:任务间的并行、任务间的先后顺序。
六、进程三级调度与调度算法
1. 三级调度体系
-
高级调度(作业调度):外存作业调入内存,仅批处理系统存在,调度频率最低
-
中级调度(内存调度):负责进程挂起/激活,内外存置换,缓解内存压力
-
低级调度(进程调度):分配CPU资源,调度频率最高、最核心
2. 四大经典调度算法(优劣对比)
|
调度算法 |
核心特点 |
优点 |
缺点 |
适用场景 |
|---|---|---|---|---|
|
FCFS先来先服务 |
按到达顺序依次执行 |
公平简单、无饥饿 |
短作业等待久、吞吐量低 |
批处理系统 |
|
SJF短作业优先 |
优先执行运行时间短的进程 |
吞吐量高、资源利用率高 |
长作业饥饿、无法预知时长 |
后台批处理 |
|
RR时间片轮转 |
固定时间片轮换占用CPU |
响应快、多用户公平 |
时间片过小开销大 |
分时操作系统 |
|
优先级调度 |
高优先级进程优先抢占CPU |
关键任务优先、响应及时 |
低优先级进程易饥饿 |
实时操作系统 |
七、进程同步与互斥
1. 同步与互斥定义
-
互斥:多个进程不能同时访问临界资源,排他性访问(如打印机、共享变量)
-
同步:多个进程按固定先后顺序协同执行,存在执行时序约束
2. 信号量初值规则
-
互斥信号量:初值固定为1,保证临界资源唯一访问
-
同步信号量:初值为初始可用资源数量,用于控制进程执行顺序
八、死锁原理与银行家算法(案例题重难点)
1. 死锁定义
多个并发进程互相持有对方所需资源,互相无限等待,所有进程无法推进,陷入永久阻塞状态。
2. 死锁四大必要条件(Coffman条件,必须同时满足)
-
互斥条件:资源独占访问,不可共享
-
持有并等待:进程已持有资源,同时等待其他资源
-
不可剥夺:资源只能主动释放,无法强制抢占
-
环路等待:进程资源依赖形成闭环链路
💡 核心结论:产生死锁必须同时满足四条件;预防死锁只需破坏任意一个条件。
3. 死锁四种处理策略
-
预防死锁:事前破坏四大条件之一,开销大、资源利用率低
-
避免死锁:事前动态预判安全序列,经典算法:银行家算法
-
检测与解除死锁:事后检测,通过撤销进程、剥夺资源解除死锁
-
忽略死锁:默认死锁概率极低,家用系统主流方案
4. 银行家算法核心逻辑(软考案例必考)
核心作用:动态分配资源,预判系统是否存在安全序列,避免死锁发生。
执行步骤
-
计算每个进程剩余资源最大需求(Max - Allocation)
-
判断当前系统剩余资源 Available 是否满足进程剩余需求
-
满足则分配资源,执行完成后回收进程全部资源
-
遍历所有进程,若能全部执行完毕,系统为安全状态,无死锁风险
九、高频易错总结
-
进程是资源分配单位,线程是CPU调度单位,二者不可混淆。
-
三态转换无:就绪→阻塞、阻塞→运行,考试高频纠错点。
-
分时系统靠时间片轮转,实时系统靠优先级抢占调度。
-
互斥信号量初值为1,同步信号量初值为资源数。
-
银行家算法是避免死锁,不是预防死锁。
-
死锁四条件同时成立才会死锁,破坏任意一条即可预防。
-
单CPU系统微观串行,任一时刻最多只有一个进程处于运行态。
下期预告:系统架构师备考:操作系统基础 | 存储管理
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐

所有评论(0)