系统架构师备考:操作系统基础 | 设备管理
一、设备管理核心目标与整体架构
设备的理解:设备是计算机系统与外界交互的工具,具体负责计算机与外部的输入/输出工作,所以常称为外部设备(简称外设)。
在计算机系统中,将负责管理设备和输入/输出的机构称为IO系统。
1.1 核心目标
设备管理的本质是解决 CPU 高速运算与 I/O 低速读写的速度矛盾,核心目标:
-
屏蔽硬件差异,实现设备统一管理
-
提升 CPU 与外设的并行工作能力
-
减少 I/O 中断次数,降低系统开销
-
合理分配设备资源,避免冲突与死锁
-
利用缓冲、假脱机技术,大幅提升整体吞吐
1.2 I/O系统层级结构
用户进程 → 设备无关软件 → 设备驱动程序 → 中断处理程序→ 物理设备
-
设备无关软件:统一接口、设备分配、逻辑映射,与硬件无关
-
设备驱动程序:对接硬件控制器,完成具体读写指令,硬件相关
-
中断处理程序:硬件芯片,负责数据传输、状态检测、中断上报

1.3 设备分类
1)按数据传输单位
-
块设备:以数据块为单位传输,可随机访问,代表:磁盘、SSD、U盘
-
字符设备:以字符流传输,顺序访问、不可随机寻址,代表:键盘、鼠标、打印机
2)按资源分配特性
-
独占设备:同一时刻仅一个进程占用,竞争强、利用率低(打印机、磁带机)
-
共享设备:多进程可交替并发使用,利用率高(磁盘)
-
虚拟设备:通过软件技术将独占设备改造为可共享设备(SPOOLing实现)
二、四种I/O控制方式(核心重难点)
I/O控制方式是架构师考试必考辨析题,考察优先级、CPU占用、并行能力、适用场景。整体演进逻辑:CPU全程参与 → 逐步放权硬件 → 软硬件并行最大化。
2.1 程序直接控制(轮询方式)
原理:CPU不断循环轮询设备状态,设备未就绪则CPU持续等待,全程占用CPU。
特点:实现最简单、硬件成本极低;CPU全程忙等,完全无并行性,系统效率极低。
适用场景:低速简单设备、早期嵌入式极简系统。
2.2 中断驱动控制
原理:CPU发起I/O请求后,转而执行其他任务;设备就绪后主动发送中断,CPU介入完成数据传输。
特点:解放CPU等待时间,支持CPU与设备初步并行;每传输一个字符/小块就触发一次中断,中断频繁、开销大,大批量传输效率差。
适用场景:中低速字符设备(键盘、鼠标)。
2.3 DMA直接存储器存取(高频考点)
原理:硬件DMA控制器接管数据传输,无需CPU逐字节干预,直接完成「内存↔设备」整块数据搬运;仅在传输开始、结束时需要CPU少量干预。
特点:大幅减少中断次数,CPU开销极低,块传输效率极高;只能完成简单整块传输,无复杂数据处理能力。
适用场景:高速块设备(磁盘、SSD、网卡大数据传输)。
2.4 通道控制方式(大型机专属)
原理:专属硬件通道处理器,独立执行I/O指令,可自主管理多设备、多通道并发传输,完全解放CPU。
特点:并行性最强、系统效率最高;硬件结构复杂、成本极高。
适用场景:大型服务器、巨型机、高端商用系统。
2.5 四种方式终极对比(必背表格)
| 控制方式 | CPU干预程度 | 并行性 | 中断频率 | 适用场景 |
|---|---|---|---|---|
| 程序轮询 | 全程干预、忙等 | 无并行 | 无中断 | 低速简单设备 |
| 中断驱动 | 按需干预 | 初步并行 | 极高(按字节) | 字符设备 |
| DMA | 仅首尾干预 | 高度并行 | 低(按数据块) | 高速块设备 |
| 通道 | 几乎零干预 | 完全并行 | 极低 | 大型机高端设备 |
三、缓冲技术(提速核心原理)
3.1 缓冲核心作用
解决CPU高速、设备低速的速度不匹配问题,三大核心价值:
-
缓和CPU与I/O设备速度矛盾
-
减少硬件中断次数,降低系统调度开销
-
提升设备与系统整体吞吐率
3.2 三类缓冲机制
-
单缓冲:内存仅1个缓冲区,CPU与设备串行工作,效率一般,实现简单
-
双缓冲:两个缓冲区交替读写,实现CPU与设备初步并行,有效提升吞吐
-
多缓冲/缓冲池:系统统一管理一组缓冲区,动态分配、复用资源,适配高并发I/O场景,现代系统主流方案
四、SPOOLing 假脱机技术(超级高频考点)
4.1 核心定义
SPOOLing(假脱机):利用外存空间模拟内存缓冲区,通过软件技术将独占设备改造为共享虚拟设备,是设备管理最核心的工程优化技术。
4.2 工作原理(以打印机为例)
传统打印机是独占设备,同一时间只能一个任务打印,其他任务阻塞等待。
SPOOLing改造后:
-
用户打印任务不直接发送给打印机
-
系统将任务先写入外存的输出井(后台缓冲区)
-
后台守护进程异步从输出井取任务,有序交给打印机执行
4.3 核心优缺点
✅ 优点
-
独占设备虚拟化、共享化,设备利用率大幅提升
-
用户进程无需阻塞等待I/O完成,响应速度快
-
实现I/O操作与CPU运算完全并行
❌ 缺点
-
需要占用大量外存空间作为缓冲池
-
后台进程持续调度,存在一定系统开销
必考一句话总结:SPOOLing 不是硬件,是纯软件技术;核心价值是「独占设备虚拟化」。
五、磁盘调度算法(案例计算+选择必考)
磁盘有正反两个盘面,每个盘面有多个同心圆,每个同心圆是一个磁道,每个同心圆又被划分为多个扇区,数据就被存放在一 个个扇区中。
读取数据时,磁头首先要寻找到对应的磁道,然后等待磁盘进行周期旋转,旋转到指定的扇区,才能读取到对应的数据,因此,
会产生寻道时间和等待时间,就是磁头移动到磁道所需的时间和等待读写的扇区转到磁头的下方所用的时间。
磁盘访问时间 = 寻道时间(主要耗时) + 旋转延迟 + 传输时间。磁盘调度核心就是最小化寻道时间。
5.1 四大经典算法详解
1)FCFS 先来先服务
按请求到达顺序依次访问。
优点:绝对公平、实现简单、无饥饿现象;缺点:寻道距离随机,平均耗时最长,效率最低。
2)SSTF 最短寻道时间优先
每次优先访问离当前磁头最近的磁道。
优点:平均寻道时间最短、吞吐高;缺点:产生饥饿现象,边缘磁道请求长期得不到响应。
3)SCAN 电梯算法(主流)
磁头单向移动,沿途响应所有请求,到达磁盘端点后折返,如同电梯上下运行。
优点:解决饥饿问题,平均性能优异,兼顾效率与公平;现代操作系统默认调度算法。
4)C-SCAN 循环扫描算法
单向扫描,到达端点后直接跳回起始端,不折返反向响应,只沿固定方向处理请求。
优点:请求分布均匀时,响应时间更稳定,适合高并发、大批量磁盘访问场景。
5.2 算法性能优先级
SCAN ≈ C-SCAN > SSTF > FCFS
5.3 CPU 调度算法全对比表
| 调度算法 | 类型 | 特点 | 优点 | 缺点 | 适用场景 |
|---|---|---|---|---|---|
| 先来先服务 (FCFS) | 非抢占式 | 按任务到达顺序排队执行 | 简单、公平 | 对短作业不友好(护航效应) | 批处理系统 |
| 短作业优先 (SJF) | 非抢占 / 抢占 | 优先执行预计运行时间最短的作业(抢占式称为 SRTF) | 最小化平均等待时间 | 需预知作业时间,长作业可能饥饿 | 已知运行时间的批处理任务 |
| 优先级调度 | 抢占 / 非抢占 | 按优先级分配 CPU,优先级可静态或动态调整 | 灵活性高 | 低优先级任务可能饥饿 | 实时系统 / 关键任务调度 |
| 轮转调度 (RR) | 抢占式 | 每个任务分配固定时间片(如 10ms),超时后轮换 | 响应时间快 | 时间片大小影响切换频率 | 交互式系统(分时 OS) |
| 多级反馈队列 (MLFQ) | 抢占式 | 多个优先级队列,任务动态升降级(如新任务进高优先级队列,长时间任务降级) | 平衡响应时间和吞吐量 | 参数配置复杂 | 通用系统(如早期 Unix) |
| 高响应比优先 (HRRN) | 非抢占式 | 优先级 = (等待时间 + 预计运行时间)/ 预计运行时间 | 避免长作业饥饿 | 需预知作业时间 | 批处理与交互混合场景 |
| 多队列调度 (MQ) | 抢占式 | 按任务类型分队列(如实时任务、普通任务),每队列独立调度策略 | 支持异构任务 | 资源分配策略复杂 | 多核 / 多类型任务系统 |
| 公平共享调度 (FSS) | 抢占式 | 按用户 / 组分资源配额(如用户 A 占 50% CPU,用户 B 占 30%) | 资源分配公平 | 调度开销较大 | 多用户共享环境 |
| 最早截止时间优先 (EDF) | 抢占式 | 实时系统中优先执行截止时间最早的任务 | 满足实时性要求 | 需任务截止时间已知且可行 | 实时系统(软 / 硬实时) |
| 速率单调调度 (RMS) | 抢占式 | 周期性实时任务按周期频率分配优先级(周期越短,优先级越高) | 静态可调度性分析简单 | 仅适用于周期性任务 | 硬实时周期性任务 |
| 完全公平调度 (CFS) | 抢占式 | Linux 默认调度器,基于虚拟运行时间(vruntime)分配 CPU,红黑树管理任务队列 | 低延迟、高公平性 | 对实时任务支持需额外配置 | 通用系统(现代 Linux 内核) |
5.4 核心考点区分
-
会饥饿:SSTF
-
绝对公平无饥饿:FCFS
-
工程最优、最常用:SCAN电梯算法
-
单向循环、响应均匀:C-SCAN
六、高频易错考点
-
SPOOLing是软件技术,不属于硬件设备,不改变设备物理属性,仅实现逻辑虚拟化。
-
DMA vs 中断:中断适合少量字符传输,DMA适合大批量块传输,DMA中断次数远少于中断驱动。
-
磁盘最慢环节:寻道时间 > 旋转延迟 > 传输时间,优化重点是减少寻道次数。
-
设备独立性:用户程序访问设备使用逻辑设备名,由系统映射为物理设备,适配设备热插拔与资源动态分配。
-
虚拟设备本质:通过SPOOLing将独占设备转为共享设备,提升并发能力。
下期预告:系统架构师备考:操作系统基础 | 作业管理
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)