【软考高级·系统分析师全链路通关实战】第 08 篇:操作系统核心考点——进程、存储与文件系统

本系列定位:面向有开发经验、从零备考软考高级「系统分析师」的工程师,以《系统分析师教程(第 2 版)》为主线,按「综合知识 → 案例分析 → 论文」三科组织,需求工程与 UML 建模深拆,60 篇带你从考试小白到三科同过。


本篇你将学到

  • 进程管理:进程与线程的区别、五态模型及转换条件、PV 信号量与生产者-消费者经典计算
  • 死锁:四个必要条件、处理策略与银行家算法的安全性判定思想
  • 存储管理:分页/分段/段页式对比、页面置换算法 FIFO/LRU/OPT 的完整手算过程
  • 文件系统:索引结点思想、多级索引(UNIX 方式)下最大文件大小的计算
  • 磁盘调度与设备管理的概念判定

学完本篇,你将拿下操作系统在综合知识中的 3-5 个稳定分位,PV 操作与页面置换手算是其中最需要动手练的两类计算题。


考点热力表

知识点综合知识案例分析论文
进程状态转换(五态图)★★★——
信号量与 PV 操作★★★★—
死锁条件与银行家算法★★★—
页式/段式存储管理★★——
页面置换算法手算★★★——
多级索引文件大小计算★★——
磁盘调度算法★——

说明:操作系统在本考试中几乎只服务综合知识;但「并发控制」「死锁」的概念会在第 10 篇数据库并发调度中换个身份重逢,本篇打好地基。


一、进程管理:状态与同步

1.1 进程与线程

进程是资源分配的基本单位(拥有独立地址空间),线程是CPU 调度的基本单位(共享所属进程的资源)。多线程切换开销小、通信无需内核,但一个线程崩溃可能拖垮整个进程。判定题高频:「线程拥有自己的栈与寄存器上下文,但不拥有独立地址空间」。

1.2 五态模型

建立PCB分配资源

admission

进程调度

时间片到

等待资源或IO

事件发生

正常结束

创建态

就绪态

运行态

阻塞态

记忆要点:阻塞态不能直接到运行态(必须先回就绪态排队);运行→阻塞是「主动行为」(等 IO),阻塞→就绪是「被动唤醒」。挂起态(静止态)引出七态模型,判定「挂起换出到外存」即可。

1.3 信号量与 PV 操作

信号量 S 是带队列的整型变量:P 操作(wait):S 减 1,S<0 则阻塞自己入队;V 操作(signal):S 加 1,S≤0 则唤醒队首进程。物理含义:S>0 时表示可用资源数;S<0 时其绝对值表示等待进程数。

真题风格例题 1(生产者-消费者):云诊通问诊消息模块:医生端产生问诊消息放入缓冲区(容量 8 条),药师端消费审核。设信号量 empty=8(空槽位)、full=0(消息数)、mutex=1(互斥访问缓冲区)。生产者与消费者伪代码:

生产者:                消费者:
while(true){           while(true){
  生产一条消息;           P(full);
  P(empty);               P(mutex);
  P(mutex);               取出一条消息;
  放入缓冲区;             V(mutex);
  V(mutex);               V(empty);
  V(full);                处理消息;
}                      }

三个必考判定:①P(empty) 与 P(mutex) 的顺序不可颠倒——先拿互斥锁再等空位,会导致消费者无法进入临界区释放空位,形成死锁;②三个信号量职责分别是同步(empty/full)与互斥(mutex);③初始时缓冲区为空,empty=8、full=0。

速算变式:若 4 个生产者、3 个消费者共享容量 8 的缓冲区,某时刻已放入 6 条消息,则 empty=2、full=6、mutex=1(无人占用时)。信号量取值类题就是「数资源」。

1.4 死锁

四个必要条件(缺一不可):互斥、请求保持(占有且等待)、不可剥夺(不可抢占)、循环等待。破坏任一即可防死锁:资源一次性分配(破请求保持)、可抢占分配(破不可剥夺)、资源有序分配(破循环等待——按序申请是工程上最常用的)。

银行家算法思想:进程申请资源时,先试分配,再检查系统能否找到一个安全序列使所有进程依次完成;能则分配,不能则让进程等待。判定「避免死锁(不是检测/预防)」是概念题关键——预防靠破坏条件、避免靠动态判断、检测靠资源分配图。


二、存储管理:从分页到置换算法

2.1 分页、分段与段页式

维度分页分段段页式
划分依据物理等长(页)逻辑意义(段)先分段再分页
地址结构页号+页内偏移段号+段内偏移段号+页号+页内偏移
碎片内部碎片(最后一页不满)外部碎片都有但较少
共享/保护难易(按逻辑段)易
优点无外部碎片、管理简单便于共享保护兼得

页式地址换算必会:逻辑地址 = 页号×页长 + 页内偏移。速算示例:页长 4KB(2¹²),逻辑地址 8300 → 页号 = 8300/4096 = 2,偏移 = 8300-8192 = 108;页号 2 对应物理块 6,则物理地址 = 6×4096+108 = 24684。

快表(TLB)是页表的 Cache 命中可省访存次数:无快表两次访存,快表命中一次。

2.2 页面置换算法手算(必考)

真题风格例题 2:云诊通报告服务进程的页访问序列为 1、2、3、4、1、2、5、1、2、3、4、5(引用串),分配 3 个页框,分别用 FIFO 与 LRU 求缺页次数(带 ★ 为缺页)。

FIFO(淘汰最先进入者):

访问123412512345
淘汰———123451234
缺页★★★★★★★★★★★★

逐格推演(括号为页框内容,队首为最老):1→(1);2→(1,2);3→(1,2,3);4 淘汰 1→(2,3,4);1 淘汰 2→(3,4,1);2 淘汰 3→(4,1,2);5 淘汰 4→(1,2,5);1 命中;2 命中;3 淘汰 1→(2,5,3);4 淘汰 2→(5,3,4);5 淘汰 3?不——5 命中于页框(5,3,4)。修正最后一步:第 12 次访问 5 时页框为 (5,3,4),命中。FIFO 缺页 11 次。这正是 Belady 异常的经典序列:页框加到 4 时 FIFO 缺页反而变 10→9 次不一定减少,「更多页框更多缺页」的异常现象是判定题常客(OPT 与 LRU 不会出现 Belady 异常)。

LRU(淘汰最久未使用):

访问123412512345
缺页★★★★★★★命中命中★★★

推演:访问 5 后页框 (5,1,2)(1、2 刚用过);接着 1、2 命中并刷新;3 缺页淘汰 5(最久未用)→(3,1,2);4 缺页淘汰 1→(3,4,2)?LRU 序为 2>1>3,淘汰 1 得 (3,4,2) 需按时间序重排为 (4,2,3);5 缺页淘汰 3→(4,2,5)。LRU 缺页 10 次。

OPT(最佳,淘汰以后最久不用的):作对照理论下限,序列末段 3、4、5 各缺一次,前段 7 次缺页后 1、2 持续命中,共 9 次。三算法排序结论:OPT ≤ LRU ≤ FIFO(缺页数),这是无需计算的判定结论。


三、文件系统与设备管理

3.1 索引结点与多级索引

UNIX 类文件系统的文件地址放在索引结点(inode)的地址项中,采用多级索引:直接地址项 + 一级间接 + 二级间接 + 三级间接。设磁盘块大小 4KB、每个地址项 4B,则每块可存 4096/4 = 1024 个地址。

真题风格例题 3:某文件系统 inode 含 10 个直接地址项、1 个一级间接、1 个二级间接、1 个三级间接地址项。块大小 4KB、地址项 4B,求最大文件长度。

  • 直接:10×4KB = 40KB
  • 一级间接:1024×4KB = 4MB
  • 二级间接:1024×1024×4KB = 4GB
  • 三级间接:1024³×4KB = 4TB

总最大 = 4TB + 4GB + 4MB + 40KB ≈ 4TB+4GB(约 4.004TB)。答题格式要逐级列式——这类题的采分点在每一级的幂次。

3.2 文件存储与检索概念

  • 位示图法管理磁盘空间:每 bit 表示一个物理块空闲/占用。速算:磁盘 2048 块,位示图需 2048/8 = 256B。块号与字号字位换算(字号 i、字位 j 从 0 起:块号 = 字长×i+j)偶尔考,规则简单。
  • 磁盘调度:FCFS(公平但寻道长)、SSTF(最短寻道优先,可能饥饿)、SCAN(电梯算法,往返扫描)——排序判定题。

3.3 PV 与五态的过程串联

把本篇知识用一条时间线串起来(也是复习自检图):

药师消费者进程 信号量empty=8 问诊生产者进程 药师消费者进程 信号量empty=8 问诊生产者进程 就绪→运行 由调度器决定 P(empty) 申请空位 S=7 通过 进程继续运行 P(mutex) 进临界区写入 V(mutex) 退出临界区 V(full) 消息数+1 P(full) 取消息 唤醒并进入就绪态

真题风格自测题

1. 进程是资源分配的基本单位,线程是( )的基本单位。
A. 存储分配 B. 文件共享 C. CPU 调度 D. 设备分配

2. 进程从阻塞态回到运行态前,必须先进入( )。
A. 创建态 B. 就绪态 C. 挂起态 D. 终止态

3. 由运行态转为阻塞态的典型原因是( )。
A. 时间片用完 B. 等待 I/O 完成 C. 被高优先级抢占 D. 进程结束

4. 生产者-消费者问题中,先执行 P(mutex) 再执行 P(empty) 可能导致( )。
A. 活锁 B. 死锁 C. 饥饿 D. 抖动

5. 信号量 S 初值 8,当前值为 -3,表示等待的进程数为( )个。
A. 3 B. 5 C. 8 D. 11

6. 下列不属于死锁四个必要条件的是( )。
A. 互斥 B. 请求保持 C. 不可剥夺 D. 时间片轮转

7. 银行家算法属于死锁的( )策略。
A. 预防 B. 避免 C. 检测 D. 解除

8. 页长 4KB,逻辑地址 8300 对应页号 2(页框为物理块 6),物理地址为( )。
A. 8192 B. 24684 C. 24576 D. 24692

9. 本篇例题 2 中,FIFO 算法的缺页次数为( )。
A. 9 B. 10 C. 11 D. 12

10. 承接第 9 题,LRU 算法的缺页次数为( )。
A. 9 B. 10 C. 11 D. 12

11. 不会出现 Belady 异常的置换算法是( )。
A. FIFO B. LRU 与 OPT C. 仅 FIFO 会正常 D. 随机置换

12. 块大小 4KB、地址项 4B,二级间接索引可寻址的最大空间约为( )。
A. 4KB B. 4MB C. 4GB D. 4TB

13. 磁盘 2048 块,位示图管理需要( )字节。
A. 128 B. 256 C. 512 D. 2048

参考答案:1.C 2.B 3.B 4.B 5.A 6.D 7.B 8.B 9.C 10.B 11.B 12.C 13.B


本篇小结

知识点核心内容
进程 vs 线程进程是资源分配单位,线程是调度单位
五态转换阻塞必须先回就绪;运行→阻塞是主动等事件
PV 操作P 减 1 负则阻塞、V 加 1 负则唤醒;先同步后互斥防死锁
死锁互斥/请求保持/不可剥夺/循环等待;有序分配破循环等待
页式地址物理地址 = 块号×页长 + 页内偏移
置换算法OPT ≤ LRU ≤ FIFO;FIFO 有 Belady 异常
多级索引直接+一级+二级+三级间接逐级幂次累加

下篇预告

第 09 篇:计算机网络与分布式系统——从 OSI 到网络规划
OSI 七层速记、子网划分计算、CAP/BASE 与分布式事务概念,以及云诊通三地市七院区组网示范。


如果本篇内容对你有帮助,欢迎点赞收藏!有任何疑问,欢迎在评论区交流。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐