《软考通关笔记》03:操作系统
目录
- 操作系统概述
- 进程管理
- 存储管理
- 文件管理
- I/O 设备管理
- 操作系统内核架构
- 高频易混考点对比速记
一、操作系统概述
1. 操作系统四大核心特征
(1)并发(最核心特征)
同一时间段多个程序交替推进;宏观同时运行,微观分时占用 CPU。
并发:单核 CPU,时间段内交替执行
并行:多核 CPU,同一时刻多个程序同时运行
区分口诀:并发分时段,并行同一刻
(2)共享
并发进程共用软硬件资源,衍生概念临界资源
临界资源:同一时间仅允许 1 个进程访问(打印机、共享变量、摄像头),访问临界资源必须互斥。
(3)虚拟
对物理资源做逻辑抽象、资源扩容,屏蔽硬件限制。
典型案例:虚拟内存、虚拟 CPU、虚拟机。
(4)异步
进程以独立、不可预知的速度推进;异步会导致执行顺序混乱,需要同步 / 互斥机制约束次序。
四者逻辑关系
并发是基础前提 → 产生资源共享;并发必然引发异步问题,依靠同步互斥解决。
2. 操作系统发展阶段(选择高频考点)
手工操作阶段:无操作系统,人机串行,效率极低
批处理阶段
单道批处理:内存仅存放一道程序,CPU 大量空闲
多道批处理:操作系统正式诞生;支持并发,无交互能力
分时操作系统:时间片轮转调度,多用户联机使用,人机交互强(Windows、Linux)
实时操作系统:优先保障及时性、高可靠性;应用于导弹、自动驾驶、工业嵌入式
衍生系统:网络操作系统、分布式操作系统、个人桌面操作系统
二、进程管理(大题核心模块)
1. 进程五大状态(必考)
PCB(进程控制块):进程唯一标识,存储进程全部管理信息。
|
状态 |
核心特点 |
状态转换规则 |
|
创建态 |
OS 分配资源、初始化 PCB |
新建进程请求触发 |
|
就绪态 |
具备运行条件,仅缺少 CPU |
调度分配 CPU→运行;时间片耗尽 / 被抢占→退回就绪 |
|
运行态 |
当前正在 CPU 执行指令 |
时间片到 / 等待 IO 事件→阻塞;进程执行完毕→终止 |
|
阻塞态(等待态) |
等待 IO、信号等外部事件,有 CPU 也无法运行 |
等待事件完成→转为就绪 |
|
终止态 |
进程结束,OS 回收资源、销毁 PCB |
调用 exit 退出、程序异常终止 |
易错区分
阻塞态不能直接进入运行态,必须先转入就绪队列;
就绪:缺 CPU;阻塞:缺外部事件。
2. 进程同步与互斥
(1)两类制约关系
互斥(间接制约)
多个进程争抢临界资源,同一时刻仅一个进程访问。
示例:多个进程共用一台打印机。
同步(直接制约)
进程存在固定先后执行顺序,存在数据依赖。
示例:管道通信,必须先写入数据,后读取数据。
产生根源:进程异步推进,执行顺序不可控。
(2)临界区访问四大原则(必背)
空闲让进:无进程占用临界资源,请求进程直接进入
忙则等待:已有进程占用,其余进程阻塞等待
有限等待:进程不会无限阻塞,避免饥饿问题
让权等待:无法进入临界区时主动释放 CPU,禁止忙等
3. 信号量与 P/V 操作(计算题核心)
基础定义
信号量 S:整型变量,代表系统剩余可用资源数量
S > 0:剩余可用资源总数
S = 0:资源全部占用,无等待进程
S < 0:数值绝对值 = 当前阻塞等待该资源的进程数量
P、V 操作均为原语,执行过程不可中断。
P (S)(wait,申请资源):S = S - 1
资源充足直接进入临界区;资源不足,进程阻塞进入等待队列。
V (S)(signal,释放资源):S = S + 1
释放资源,若队列存在等待进程,自动唤醒队首进程。
三大使用场景
实现互斥:信号量初值设为 1(二元互斥信号量)
实现同步:控制进程固定先后执行顺序
描述多进程前驱执行关系
4. 死锁
(1)死锁 4 个必要条件(必须同时满足才会产生死锁)
记忆口诀:互斥、不剥夺、请求保持、循环等待
互斥条件:临界资源同一时间仅能被一个进程占用
不剥夺条件:资源仅能由进程主动释放,系统无法强行抢占
请求并保持条件:进程已持有部分资源,申请新资源阻塞时,不释放已有资源
循环等待条件:存在进程 - 资源环形等待链,每个进程持有的资源被下一个进程申请
(2)三大死锁处理策略
死锁预防
思路:主动破坏 4 个必要条件中任意一条,从根源杜绝死锁。
破坏互斥:将临界资源改造为可共享(多数硬件无法实现)
破坏不剥夺:申请资源失败时主动释放全部资源,或系统强制抢占
破坏请求保持:进程一次性申请全部所需资源,要么全分配,要么全不分配
破坏循环等待:统一所有资源申请顺序,强制进程按固定顺序申请
优点:绝对无死锁;缺点:资源利用率低,执行效率差
死锁避免
思路:不破坏必要条件,动态判断资源分配,拒绝进入不安全状态。
经典算法:银行家算法
安全状态:存在完整执行序列,所有进程均可顺利完成;不安全状态存在死锁风险。
优点:资源利用率高于预防;缺点:需要提前预知进程最大资源需求,实现复杂
死锁检测与解除
思路:允许死锁发生,系统定时检测,发现死锁后处理。
检测方式:构建进程资源图,查找环路。
解除手段:①撤销部分死锁进程;②抢占资源分配给其他进程;③进程回滚
优点:资源利用率最高,真实操作系统主流方案;缺点:死锁发生后存在任务丢失、系统开销
三、存储管理
1. 分段存储管理(非连续分配)
逻辑地址格式
段号 S | 段内地址 W
段由程序员划分:代码段、数据段、堆栈段,各段长度不相等。
段表作用
存储内容:段号、段长、段基址(段起始物理地址)
地址变换流程:
拆分逻辑地址,分离段号 S、段内位移 W
使用段号查询段表
越界判断:S≥段表长度 或 W≥当前段长 → 越界中断
物理地址 = 段基址 + 段内地址 W
分段优缺点
优点:便于程序模块化、支持段共享、段保护,符合程序员思维
缺点:动态分配产生大量外部碎片,内存利用率低
- 分页 VS 分段 核心对比
|
对比项 |
分页存储 |
分段存储 |
|
划分主体 |
操作系统自动划分 |
用户 / 程序员划分 |
|
长度 |
页面大小固定 |
各段长度不相等 |
|
地址结构 |
页号 + 页内地址 |
段号 + 段内地址 |
|
碎片类型 |
仅存在内部碎片 |
仅存在外部碎片 |
|
设计目的 |
提升内存利用率 |
满足模块化、共享需求 |
3. 段页式存储管理(结合分页 + 分段优势)
逻辑地址三层结构
段号 S | 段内页号 P | 页内地址 W
两级查表流程
段表:根据段号找到本段页表起始地址
页表:根据段内页号找到物理块号
物理地址 = 物理块号拼接页内地址
优点:支持分段共享,碎片极少;缺点:单次内存访问需要三次访存,系统开销大
4. 请求分页・四大页面置换算法(计算题高频)
基础概念:内存物理块有限,访问页面不在内存触发缺页中断;内存已满时需要淘汰页面。
OPT 最佳置换算法
淘汰未来最长时间不访问的页面;缺页率最低,理论最优;无法实现,仅作参考标准。
FIFO 先进先出置换算法
淘汰最早装入内存的页面;独有 Belady 异常(内存块增多,缺页次数反而上升)。
LRU 最近最久未使用算法(考试最高频)
淘汰当前时间点之前,最久没有访问的页面;性能接近 OPT,商用系统广泛使用。
CLOCK 时钟置换算法(近似 LRU)
页面附加访问位,环形链表循环扫描;访问位 0 直接淘汰,访问位 1 则清零继续查找;硬件开销小,工程常用。
页面置换通用做题步骤
遍历页面访问序列
页面已在内存:不缺页;LRU 需更新访问时序
页面不在内存(缺页)
内存存在空闲块:直接装入页面
内存已满:按算法规则淘汰一页,装入新页面
统计缺页次数,计算缺页率 = 缺页次数 ÷ 总访问次数
存储碎片速记
连续分配(单一 / 固定 / 动态分区)→ 外部碎片
分页存储 → 内部碎片
分段存储 → 外部碎片
段页式:几乎无碎片
四、文件管理
1. 基础概念
文件:一组有意义信息的集合
文件属性:文件名、大小、存储位置、权限、创建时间等
文件逻辑结构(用户视角)
流式文件(无结构):文本文件
记录式文件(有结构):数据库文件
文件物理结构(磁盘存储视角)
连续分配:磁盘块连续存放;随机访问快,易产生外部碎片
链接分配:离散存储,块内存储下一块指针;无碎片,仅适合顺序访问
索引分配:独立索引块存储数据块地址;支持随机访问,占用额外索引空间(最常考)
2. 文件目录 & FCB
FCB(文件控制块):存储单个文件全部管理信息,FCB 存在则文件存在。
文件目录:大量 FCB 集合,核心目标:实现按名存取。
一级目录:系统一张目录表,文件不能重名,查找速度慢
二级目录:主目录 + 用户目录,不同用户文件可同名
多级树形目录(Windows/Linux 通用)
绝对路径:从根目录出发完整路径,全局唯一
相对路径:从当前工作目录出发访问文件
3. 磁盘空闲空间 4 种管理方式
空闲区表:记录连续空闲磁盘区域;适配连续分配,碎片多时表格庞大
位示图法:二进制位图,1 代表占用、0 代表空闲;占用空间固定,计算题高频
空闲块链:空闲块通过指针串联;分配需遍历链表,效率偏低
成组链接法(UNIX 专用):空闲块分组管理,每组首块记录下一组信息;兼顾空间与效率
五、I/O 设备管理
1. I/O 设备分类
按使用特性:人机交互设备、存储设备、网络通信设备
按传输速率:低速、中速、高速设备
按信息交换单位:块设备、字符设备
2.四大 I/O 控制方式(CPU 干预逐步减少)
|
控制方式 |
核心特点 |
传输单位 |
优缺点 |
|
程序直接控制(轮询) |
CPU 持续轮询设备状态,全程占用 CPU |
字 |
逻辑简单;CPU 利用率极低 |
|
中断驱动方式 |
I/O 发起后 CPU 并行运算,传输完成发中断通知 |
字 |
释放部分 CPU;单次仅传 1 字,中断频繁 |
|
DMA 直接存储器访问 |
CPU 仅初始化,整块数据由 DMA 搬运,结束才中断 |
块 |
大幅减少 CPU 干预;单次仅处理连续块 |
|
通道控制方式 |
独立硬件执行通道程序,自主完成批量 I/O |
一组块 |
CPU 干预最少;硬件成本高,多用于大型机 |
六、操作系统内核架构
1. 单体内核
核心逻辑:文件系统、驱动、图形模块全部运行在内核态、同一地址空间。
代表系统:Linux
优点:无频繁进程切换,通信开销小,运行效率高
缺点:内核庞大难裁剪;单一模块崩溃会导致整机宕机,安全性差
2. 微内核
核心逻辑:内核仅保留基础调度功能;驱动、文件系统、图形服务全部运行在用户态进程。
代表系统:Minix、QNX
优点:内核精简易移植;服务相互隔离,单个服务故障不宕机;适配分布式系统
缺点:用户态 / 内核态频繁切换,进程通信开销大,整体效率低于单体内核
七、全书高频坑点速记
并发≠并行;并发单核,并行多核
就绪缺 CPU,阻塞缺事件,阻塞不能直接到运行态
P 操作 S 减 1,V 操作 S 加 1;P 可能阻塞,V 可能唤醒
死锁 4 条件必须同时成立,破坏任意一条即可避免死锁
FIFO 独有 Belady 异常;OPT 无法实现;LRU 计算题最多
分页:内部碎片;分段:外部碎片
页面置换仅属于请求分页,基础分页无置换操作
文件逻辑结构 = 用户视角;物理结构 = 磁盘存储视角
DMA 传输单位是块,中断 / 轮询传输单位是字
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐


所有评论(0)