计算机系统基础知识(六):软件篇之操作系统详解
在系统架构设计师考试中,操作系统是必考内容,通常在上午的综合知识部分出现,分值约3-4分。虽然分值不高,但操作系统知识是理解后续数据库、网络、分布式系统的基础。根据历年真题统计,进程管理(特别是PV操作、前驱图)、存储管理(页面置换)、文件系统(索引文件) 是三大高频考点。本文将依据《系统架构设计师教程(第二版)》,结合历年真题考点,系统梳理操作系统的核心知识,并提供实践拓展内容,帮助你在复习中抓
📝 前言
操作系统是计算机系统中最重要的系统软件,它负责管理和控制计算机硬件与软件资源,合理地组织计算机工作流程,并为用户提供一个良好的人机交互环境。如果把计算机硬件比作人的躯体,那么操作系统就是人的“灵魂”,没有它,计算机只是一堆冰冷的电子元件。
在系统架构设计师考试中,操作系统是必考内容,通常在上午的综合知识部分出现,分值约3-4分。虽然分值不高,但操作系统知识是理解后续数据库、网络、分布式系统的基础。根据历年真题统计,进程管理(特别是PV操作、前驱图)、存储管理(页面置换)、文件系统(索引文件) 是三大高频考点。
本文将依据《系统架构设计师教程(第二版)》,结合历年真题考点,系统梳理操作系统的核心知识,并提供实践拓展内容,帮助你在复习中抓住重点、突破难点。
一、操作系统概述
1.1 操作系统的定义与作用
操作系统的定义:操作系统是能有效地组织和管理系统中的各种软/硬件资源,合理地组织计算机系统工作流程,控制程序的执行,并且向用户提供一个良好的工作环境和友好的接口。
操作系统的两大作用:
-
资源管理:通过有效管理CPU、内存、I/O设备等资源,提高计算机系统的效率
-
用户接口:改善人机界面,向用户提供友好的工作环境
1.2 操作系统的特征
操作系统有四大基本特征:
| 特征 | 含义 | 示例 |
|---|---|---|
| 并发性 | 两个或多个事件在同一时间间隔内发生 | 同时运行多个应用程序 |
| 共享性 | 系统中的资源可供多个并发进程共同使用 | 多个程序共享内存、CPU |
| 虚拟性 | 将物理实体映射为多个逻辑对应物 | 虚拟内存、虚拟机 |
| 不确定性 | 系统事件发生的随机性和不可预测性 | 中断的随机到达、进程调度顺序 |
重要辨析:操作系统的特征包括不确定性,而不是确定性。虽然程序本身的执行逻辑是确定的,但操作系统环境充满了随机性(如用户点击、网络数据包到达时间等),这正是操作系统需要妥善管理的关键挑战。
1.3 操作系统的分类
根据不同的应用场景和设计目标,操作系统可分为以下类型:
| 类型 | 特点 | 典型代表 |
|---|---|---|
| 批处理操作系统 | 用户作业成批处理,效率高但交互性差 | 早期大型机系统 |
| 分时操作系统 | 时间片轮转,提供人机交互 | UNIX、Linux |
| 实时操作系统 | 对外部事件快速响应,高可靠性 | VxWorks、RT-Thread |
| 网络操作系统 | 提供网络通信和资源共享 | Windows Server、Linux |
| 分布式操作系统 | 多台计算机协同工作,对用户透明 | Amoeba、Plan 9 |
| 微机操作系统 | 个人计算机使用 | Windows、macOS |
| 嵌入式操作系统 | 微型化、可定制、实时性强 | 鸿蒙、FreeRTOS |
1.4 嵌入式操作系统的特点
嵌入式操作系统是考试中容易被忽略但重要的知识点,其五大特点:
-
微型化:占用资源少,内存小、字长短、运行速度有限、能源少
-
可定制:可针对不同硬件平台进行配置,满足不同应用需求
-
实时性:对关键应用需要迅速响应
-
可靠性:关键应用需要容错和防故障措施
-
易移植性:采用硬件抽象层和板级支持包,便于移植到不同硬件
二、进程管理
进程管理是操作系统考试中分值最高、难度最大的部分,约占操作系统考点的35%,尤其是PV操作、前驱图分析,几乎年年必考。
2.1 进程的基本概念
进程的定义:进程是程序在某个数据集合上的一次运行活动,是系统进行资源分配和调度的独立单位。
进程的组成:进程由三部分组成:
-
程序:描述进程要完成的功能
-
数据:程序执行时所需的数据和工作区
-
进程控制块(PCB):记录进程的状态和相关信息,是进程存在的唯一标志
进程与线程的区别:
-
进程:拥有资源的基本单位
-
线程:独立调度的基本单位,同一进程内的线程共享进程的资源
2.2 进程的状态及其转换
三态模型:
-
运行态:进程获得CPU,正在执行
-
就绪态:进程已具备运行条件,等待CPU
-
阻塞态:进程因等待某事件而暂停执行
┌─────────────┐
│ 就绪态 │◄────────────┐
└──────┬──────┘ │
│ 调度 │ 时间片完
▼ │
┌─────────────┐ I/O完成 │
│ 运行态 │──────────────┘
└──────┬──────┘
│ 等待I/O
▼
┌─────────────┐
│ 阻塞态 │
└─────────────┘
五态模型:在三态基础上增加新建态(进程刚创建)和终止态(进程已结束)。
2.3 进程间的通信:同步与互斥
这是考试中最难也是最常考的知识点。
基本概念:
-
进程同步:合作进程间的直接制约关系,需按一定顺序执行(如生产者-消费者)
-
进程互斥:多个进程因争夺临界资源而产生的间接制约关系
临界资源:一次只能给一个进程使用的资源,如打印机、共享变量等。
2.4 信号量与PV操作
信号量S的物理意义:
-
若S≥0,表示可用的资源数
-
若S<0,其绝对值表示阻塞队列中等待该资源的进程数
P、V操作(均为原子操作):
-
P操作:申请资源,S=S-1;若S≥0,进程继续;若S<0,进程进入阻塞
-
V操作:释放资源,S=S+1;若S>0,进程继续;若S≤0,唤醒一个阻塞进程
利用PV操作实现互斥
// 互斥信号量mutex,初值为1
P(mutex);
临界区操作;
V(mutex);
利用PV操作实现同步
经典生产者-消费者问题:假设缓冲区可存放n件产品
-
S:互斥信号量,初值1(保护缓冲区)
-
S1:表示缓冲区是否可放产品,初值n
-
S2:表示缓冲区是否有产品,初值0
生产者进程: 消费者进程:
P(S1) P(S2)
P(S) P(S)
生产产品放入缓冲区 从缓冲区取出产品
V(S) V(S)
V(S2) V(S1)
2.5 前驱图与PV操作(高频考点)
前驱图(前趋图)是一个有向无循环图,用来表示任务之间的顺序关系和并行执行关系。
考点模式:给定前驱图,在图中标注信号量,填写PV操作位置。
解题思路:
-
分析图中的前驱关系:若P1是P2的前驱,则P1执行完后需通知P2(V操作)
-
P2执行前需测试P1是否执行完(P操作)
-
多个后继需多个V操作,多个前驱需多个P操作
典型真题示例(2009下架构真题):
系统中有三个图像处理任务,每个任务有扫描Si、图像处理Ci和打印Pi三个程序段,要求按Si→Ci→Pi顺序执行,且S1、C1、P1等任务可与其他任务的对应阶段并行。给出前驱图,要求判断哪些程序段可并行执行,以及直接制约和间接制约关系。
答案要点:S1执行完毕后,计算C1与扫描S2可并行执行;C1与S2执行完毕后,打印P1、计算C2与扫描S3可并行执行。
2.6 进程调度
调度方式:
-
可剥夺方式:更高优先级进程到来时,强行剥夺当前进程的CPU
-
不可剥夺方式:当前进程主动释放CPU
三级调度:
-
高级调度(作业调度):决定哪个后备作业调入内存
-
中级调度(对换调度):决定交换区中的哪个就绪进程调入内存
-
低级调度(进程调度):决定内存中的哪个就绪进程获得CPU
常用调度算法:
-
先来先服务(FCFS):有利于长作业,不利于短作业
-
时间片轮转:提高并发性和响应时间
-
优先级调度:优先级高的先执行
-
多级反馈调度:时间片轮转和优先级结合
2.7 死锁
死锁定义:两个以上的进程因相互争夺对方占用的资源而陷入无限等待的现象。
死锁产生的4个必要条件:
-
互斥条件:资源一次只能给一个进程使用
-
请求保持条件:进程占有资源并等待其他资源
-
不可剥夺条件:系统不能强行剥夺进程的资源
-
环路条件:进程资源图形成环路
死锁的处理策略:
| 策略 | 原理 | 典型方法 |
|---|---|---|
| 死锁预防 | 破坏四个必要条件之一 | 资源一次性分配、可剥夺资源 |
| 死锁避免 | 动态判断,避免进入不安全状态 | 银行家算法 |
| 死锁检测 | 允许死锁,定时检测并解除 | 资源分配图检测 |
| 死锁解除 | 发生死锁后解除 | 资源剥夺、撤销进程 |
死锁资源计算公式:
系统内有n个进程,每个进程都需要R个资源,那么发生死锁的最大资源数为
n×(R-1),不发生死锁的最小资源数为n×(R-1)+1
示例:系统有5个进程,每个需3个资源,则可能死锁的最大资源数为5×(3-1)=10,避免死锁至少需要11个资源。
三、存储管理
存储管理约占操作系统考点的25%,特别是页面置换算法和地址转换是高频计算题。
3.1 基本概念
逻辑地址与物理地址:
-
逻辑地址:程序员编程使用的地址(虚拟地址)
-
物理地址:内存芯片的真实地址
地址重定位:将逻辑地址变换为物理地址的过程
-
静态重定位:程序装入时完成变换
-
动态重定位:程序执行时边运行边变换
3.2 分区存储管理
| 方式 | 原理 | 优缺点 |
|---|---|---|
| 固定分区 | 内存划分成固定大小的分区 | 简单,但有内部碎片 |
| 可变分区 | 按需分配分区大小 | 无内部碎片,但有外部碎片 |
可变分区分配算法:
-
首次适应算法:从低地址开始选第一个能装下作业的空闲分区
-
最佳适应算法:选择最接近作业大小的空闲分区(易产生小碎片)
-
最差适应算法:选择最大的空闲分区
-
循环首次适应:从上次分配位置开始查找
3.3 分页存储管理
基本思想:将内存划分为固定大小的页框,将程序划分为相同大小的页面,通过页表实现地址映射。
页式存储的地址转换:
-
逻辑地址 = 页号 + 页内偏移
-
物理地址 = 页框号 × 页大小 + 页内偏移
3.4 分段存储管理
基本思想:按程序的逻辑结构分段(如代码段、数据段、栈段),每段长度可变。
分段与分页的区别:
-
分页:对用户透明,用于管理物理内存
-
分段:对用户可见,反映程序逻辑结构
3.5 虚拟存储与页面置换
虚拟存储器的思想:程序运行时只将当前需要的部分页面调入内存,其余留在外存,需要时再调入。
页面置换算法:
| 算法 | 原理 | 特点 |
|---|---|---|
| FIFO | 淘汰最先进入的页面 | 实现简单,有Belady异常 |
| LRU | 淘汰最长时间未被访问的页面 | 利用局部性,性能好 |
| LFU | 淘汰访问次数最少的页面 | 需计数器,实现复杂 |
| OPT | 淘汰将来最长时间不被访问的页面 | 理论最优,无法实现 |
典型真题示例(2010下架构真题):
某虚拟存储系统采用LRU页面淘汰算法,每个作业分配4个页面(1页存程序),矩阵A[100][100]按行序存放,每页可存200个整数。求按行遍历和按列遍历分别产生多少次缺页中断?
解析:
-
按行遍历:程序页固定,矩阵共10000个整数,占50页,每行100整数占0.5页,遍历完一行需1页?需仔细计算。真题答案:按行遍历缺页50次,按列遍历缺页5000次。
-
结论:访问顺序与数据存储顺序一致时缺页少,不一致时缺页多——体现了局部性原理的重要性。
3.6 页式存储计算示例
2025年最新真题(考生回忆版):
操作系统采用页式存储管理,用位图管理空闲页框,若页大小为4KB,物理内存大小为16GB,则位图所占内存空间大小是( )KB。
解析:
-
物理内存16GB = 16 × 1024 × 1024 KB = 16,777,216 KB
-
页大小4KB,则总页框数 = 16,777,216 ÷ 4 = 4,194,304 页
-
位图每位表示一个页框,需要4,194,304位 = 524,288字节 = 512KB
-
答案:B. 512
四、文件管理
文件管理约占操作系统考点的20%,其中索引文件结构是考试重点。
4.1 文件的基本概念
文件分类:
-
按性质和用途:系统文件、库文件、用户文件
-
按保存期限:临时文件、档案文件、永久文件
-
按保护方式:只读文件、读写文件、可执行文件
文件的逻辑结构:
-
有结构的记录式文件:由若干记录组成
-
无结构的流式文件:字节流形式(如UNIX文件)
4.2 文件的物理结构
| 结构 | 原理 | 优点 | 缺点 |
|---|---|---|---|
| 连续结构 | 文件占用连续磁盘块 | 顺序访问快 | 文件不易扩展,有外部碎片 |
| 链接结构 | 每个块有指向下一块的指针 | 无外部碎片,易扩展 | 随机访问慢 |
| 索引结构 | 用索引表记录文件所有块的位置 | 随机访问快,易扩展 | 索引表占用空间 |
4.3 索引文件结构(高频考点)
多级索引结构:当文件很大时,一级索引表不够用,需要二级、三级索引。
典型考题模式:给定索引块大小、地址长度,计算文件最大大小。
示例:
设磁盘块大小为4KB,每个块地址占4字节,采用UNIX三级索引结构(直接块10个,一级索引1个,二级索引1个,三级索引1个),求文件最大大小。
计算步骤:
-
每个磁盘块可存放的地址数 = 4KB ÷ 4B = 1024个
-
直接块可访问:10 × 4KB = 40KB
-
一级索引可访问:1 × 1024 × 4KB = 4MB
-
二级索引可访问:1 × 1024 × 1024 × 4KB = 4GB
-
三级索引可访问:1 × 1024 × 1024 × 1024 × 4KB = 4TB
-
总大小 ≈ 4TB + 4GB + 4MB + 40KB
4.4 空闲空间管理
存储空闲空间的管理方法:
-
空闲区表:记录连续空闲块的起始位置和长度
-
位示图:用二进制位表示每个块的空闲状态
-
空闲块链:将所有空闲块链接起来
-
成组链接法:UNIX使用的方法,将空闲块分组链接
五、设备管理
5.1 I/O控制方式
| 方式 | CPU参与程度 | 效率 | 适用场景 |
|---|---|---|---|
| 程序查询 | 全程参与 | 低 | 简单外设 |
| 中断驱动 | 传送时参与 | 中 | 低速外设 |
| DMA | 初始化+结束处理 | 高 | 高速块设备 |
5.2 设备独立性
设备独立性:用户程序使用逻辑设备名,由操作系统映射到物理设备,提高程序的可移植性。
SPOOLing技术:将独占设备(如打印机)改造为共享设备的技术,通过磁盘缓冲实现。
六、操作系统结构
6.1 微内核结构(高频考点)
微内核结构是将操作系统最基本的功能(如进程通信、内存管理基础)放在内核,其他服务(如文件系统、设备驱动)作为用户态服务器运行。
微内核的优点:
-
提高了灵活性和可扩展性:增加新功能只需增加服务器
-
增强了系统的可靠性:服务器出错不影响内核
-
增强了系统的可移植性:硬件相关代码封装在内核底层
-
提供了对分布式系统的支持:消息传递机制天然适合分布式
典型真题示例(2010下架构真题):
采用微内核结构的操作系统提高了系统的灵活性和可扩展性,( )。
A. 并增强了系统的可靠性和可移植性,可运行于分布式系统中
B. 并增强了系统的可靠性和可移植性,但不适用于分布式系统
C. 但降低了系统的可靠性和可移植性,可运行于分布式系统中
D. 但降低了系统的可靠性和可移植性,不适用于分布式系统
答案:A
6.2 其他操作系统结构
-
无序结构(模块组合):早期操作系统,模块间直接调用,复杂难维护
-
层次结构:分层设计,每层只与相邻层交互(如THE操作系统)
-
面向对象结构:将对象技术引入操作系统开发
-
对称多处理结构:多个CPU共享内存,对称处理
七、操作系统接口
操作系统为用户提供两类接口:
| 接口类型 | 说明 | 示例 |
|---|---|---|
| 操作一级接口 | 用户通过命令与系统交互 | 操作控制命令、菜单、窗口 |
| 程序控制一级接口 | 程序通过系统调用请求OS服务 | 系统调用 |
系统调用是操作系统提供给应用程序的编程接口,程序通过它请求内核服务。
典型真题示例(2011下架构真题):
操作系统为用户提供了两类接口:操作一级和程序控制一级的接口,以下不属于操作一级的接口是( )。
A. 操作控制命令 B. 系统调用 C. 菜单 D. 窗口
答案:B(系统调用是程序控制接口)
八、文件系统可靠性
8.1 文件系统的一致性
文件系统一致性问题:当修改后的数据块(如索引节点块、目录块、空闲块)写回磁盘前系统崩溃,会导致文件系统不一致。
影响程度:系统目录文件被破坏时影响最大。
典型真题示例(2010下架构真题):
若操作系统文件管理程序正在将修改后的( )文件写回磁盘时系统发生崩溃,对系统的影响相对较大。
A. 用户数据 B. 用户程序 C. 系统目录 D. 空闲块管理
答案:C. 系统目录
解决方案:采用文件系统一致性检查,包括块一致性检查和文件一致性检查。
九、历年真题考点分布与复习策略
9.1 考点分布统计
根据对2009-2024年真题的分析:
| 知识点 | 占比 | 考试频率 | 难度 |
|---|---|---|---|
| 进程管理(PV操作、前驱图) | 35% | ⭐⭐⭐⭐⭐ | 高 |
| 存储管理(页面置换、地址转换) | 25% | ⭐⭐⭐⭐ | 中 |
| 文件系统(索引文件、空闲管理) | 20% | ⭐⭐⭐ | 中 |
| 设备管理 | 10% | ⭐⭐ | 低 |
| 操作系统结构(微内核) | 5% | ⭐⭐ | 低 |
| 其他概念 | 5% | ⭐ | 低 |
9.2 高频考点总结
-
PV操作与前驱图:几乎每年必考,需熟练掌握信号量设置和P、V操作位置
-
页面置换算法:特别是LRU和FIFO的缺页次数计算
-
索引文件结构:多级索引的最大文件大小计算
-
微内核特点:灵活、可靠、可移植、支持分布式
-
死锁:四个必要条件、银行家算法、死锁资源计算
-
文件系统可靠性:系统目录破坏影响最大
9.3 复习策略建议
-
概念为本,理解优先:不要死记硬背,要理解每个特征的含义和原因
-
重点突破PV操作:多画前驱图,练习P、V操作填空
-
掌握计算题型:页面置换、索引文件、位图计算要熟练
-
真题导向:近5年真题反复练习,每道题都要弄懂每个选项
-
构建知识体系:将操作系统五大管理(进程、存储、文件、设备、作业)串联起来
十、实践拓展:操作系统与真实世界的连接
10.1 从理论到实践:高校操作系统课程改革
操作系统不仅是考试科目,更是实践性很强的工程领域。南京大学软件工程专业在《计算机操作系统》课程中,引入华为开发者空间云平台,让学生在真实的openEuler系统中进行实验。
课程实验设计:
-
内核模块的概念与开发
-
进程管理:进程状态变化观察
-
内存管理:系统调用使用、内存管理算法
-
I/O中断检测、设备驱动编写
-
文件操作与文件系统实现
-
进程间通信手段实践
这种“理论+实践”的模式,帮助学生更好地理解操作系统原理。
10.2 开源社区贡献:操作系统学习的进阶之路
北京邮电大学网络空间安全学院将openKylin开源操作系统引入《软件安全》课程,鼓励学生参与社区贡献。
成果展示:
-
超过150名学生参与社区实践
-
累计112项安全补丁被社区采纳
-
包含超危、高危CVE漏洞修复44项
-
修复内容涉及内核安全、系统库溢出漏洞、驱动权限提升等
学生的实践不仅提升了自身能力,更直接反哺了操作系统产业的发展。
10.3 从考试到实践:操作系统知识在实际工作中的应用
| 考试知识点 | 实际应用场景 |
|---|---|
| 进程调度 | 多线程程序设计、性能优化 |
| 内存管理 | 内存泄漏排查、JVM调优 |
| 文件系统 | 存储系统设计、数据库性能优化 |
| I/O管理 | 高并发网络编程、零拷贝技术 |
| 死锁 | 数据库并发控制、分布式锁设计 |
结语
操作系统是计算机系统的核心软件,也是架构师必须掌握的基础知识。从进程管理的PV操作到存储管理的页面置换,从文件系统的索引结构到操作系统的微内核设计,每一个知识点都在实际系统中有着广泛的应用。
希望本文的梳理能帮助你在备考中抓住重点、突破难点,顺利通过考试。同时也建议你在学习理论的同时,多动手实践——在真实的Linux系统中编写几个系统调用程序,观察进程的状态变化,分析内存使用情况。理论与实践的结合,才是掌握操作系统的最佳途径。
更多推荐



所有评论(0)