操作系统在软考高级(系统架构师)考试中占比稳定在 12% 左右,题型集中在综合知识选择题和案例分析的底层原理支撑。命题不偏不怪,但 抠细节、重辨析。以下 10 个点,年年考,必须烂熟于心。
1. 进程与线程的本质区别
- 进程 是 资源拥有者(独立地址空间、文件描述符、信号处理表等);
- 线程 是 执行流,属于某个进程,共享其资源,但拥有独立的 栈、寄存器状态、线程局部存储(TLS)。
- 关键结论:线程切换不触发地址空间切换,因此无需刷新 TLB;进程切换必须刷新 TLB,开销大一个数量级。
✅ 考点:问“调度单位”答线程;问“资源分配单位”答进程。
2. 进程状态转换图
五态模型:新建 → 就绪 → 运行 → 阻塞 → 终止
- 就绪 → 运行:被调度程序选中
- 运行 → 阻塞:主动等待(如 I/O、信号量)
- 阻塞 → 就绪:等待事件完成(如 I/O 结束)
- 运行 → 就绪:时间片用完或被高优先级抢占
⚠️ 易错点:没有“运行 → 终止”的直接跳转!必须先释放资源,进入终止态。
3. 线程同步三大原语
| |
|---|
| 只有持有者能解锁;不可递归(普通 mutex);用于保护临界区 |
| 可计数;P/V 操作;可用于 线程间 / 进程间 同步 |
| 必须与互斥锁配合使用;用于“等待某个条件成立”,避免忙等待 |
✅ 命题偏好:问“避免忙等待”选条件变量;问“控制并发数”选信号量。
4. 虚拟内存核心
- 分页:逻辑地址 → 页号 + 页内偏移;物理地址 = 页框号 + 页内偏移
- 页表:记录页号 → 页框号的映射;多级页表(如 x86-64 用四级)解决页表过大问题
- TLB(快表):Cache 页表项,命中则无需访存查页表;进程切换时必须刷新 TLB(因地址空间变了)
⚠️ 高频混淆:分段 是按逻辑模块(代码段、数据段)划分,现代 OS 基本不用;分页 是物理内存管理主流。
5. 页面置换算法
- FIFO:实现简单,但有 Belady 异常(分配页框越多,缺页反而越多)→ 不推荐,考试常作为干扰项
- LRU(最近最少使用):性能好,但硬件开销大(需记录访问时间或栈结构)→ 软考最爱考
- Clock(时钟算法):LRU 的近似实现,用 访问位(reference bit) 模拟,只需一轮扫描
✅ 记住:LRU 无 Belady 异常,FIFO 有。
6. 死锁处理
✅ 考试重点:银行家算法不考计算,但要知道它属于“避免”策略,依赖“最大需求”预声明。
7. 磁盘调度算法
- SSTF(最短寻道优先):贪心,但可能饿死远处请求
- SCAN(电梯算法):磁头单向移动,服务沿途请求,到端点折返
- C-SCAN:SCAN 的变种,磁头到端点后 立即跳回起点,不服务返回路径,响应更均匀
✅ 命题倾向:问“公平性”选 C-SCAN;问“平均寻道时间短”选 SSTF(但有缺陷)。
8. 文件系统关键概念
- inode:存储文件元数据(权限、大小、时间戳、数据块指针),不含文件名
- 硬链接:多个目录项指向同一 inode,不能跨文件系统,删除一个不影响文件
- 软链接(符号链接):独立 inode,内容是目标路径,可跨文件系统,目标删除则失效
⚠️ 易错:目录不能硬链接(为避免目录环),但可以软链接。
9. I/O 控制方式
- 程序查询(轮询):CPU 全程参与,效率最低
- 中断驱动:I/O 完成后中断 CPU,适合低速设备
- DMA(直接内存访问):CPU 只初始化,数据直传内存,适合块设备(如磁盘)
- 通道(Channel):专用处理器执行 I/O 指令,大型机使用,软考了解即可
✅ 考点:磁盘 I/O 通常用 DMA;键盘/鼠标用中断。
10. 现代扩展考点
- 容器 vs 虚拟机:
- VM:Hypervisor 虚拟硬件,Guest OS 完整内核 → 隔离强、开销大
- 容器:共享 Host 内核,靠 Namespace(隔离视图) + Cgroups(资源限制) 实现轻量隔离
- CPU 亲和性(Affinity):将进程/线程绑定到特定 CPU 核心,减少缓存失效,提升性能
- 大页内存(Huge Page):减少页表层级和 TLB 缺失,提升数据库、虚拟化性能
✅ 案例分析可用:高并发系统优化时,可提“设置 CPU 亲和性 + 使用大页内存”。
最后叮嘱
- 操作系统不考偏门理论,就考上述 10 个机制的细节辨析。
- 综合知识题往往在“似是而非”的选项中设陷阱,比如“线程共享栈”“FIFO 优于 LRU”等。
- 案例分析若涉及性能、并发、资源争用,优先从进程/线程模型、内存管理、I/O 方式切入。
把这些机制的 边界条件、适用场景、优缺点 搞清楚,操作系统模块稳拿 10 分以上。