Skip to content

设备与 I/O 管理

设备与 I/O 管理是操作系统四大资源管理之一——负责管理计算机的外设(键盘、鼠标、磁盘、网卡、打印机、GPU)与 CPU/内存之间的数据交换。CPU 速度比外设快几个数量级(纳秒 vs 毫秒),如果 CPU 直接等待外设(程序查询/忙等待),将造成巨大的资源浪费。OS 的 I/O 子系统通过中断DMA缓冲Spooling 等机制,让 CPU 与外设并行工作——CPU 启动 I/O 后去做别的,外设完成时发中断通知 CPU。理解 I/O 管理,是理解为什么 read 一次会阻塞进程、为什么磁盘随机访问比顺序慢百倍、为什么打印机要排队(Spooling)、为什么数据库用缓冲池(buffering)的基础。

设备与 I/O 管理的全部考点围绕三个层次展开:①I/O 控制方式(程序查询 → 中断驱动 → DMA → 通道)——回答"CPU 如何与设备交换数据、占用多少 CPU 时间";②缓冲与 Spooling(单/双/循环缓冲、设备虚拟化)——回答"如何缓解 CPU 与设备速度不匹配、如何让独占设备变成共享设备";③磁盘与存储(磁盘结构、FCFS/SSTF/SCAN/C-SCAN/LOOK 调度算法、RAID 0/1/5/10)——回答"如何优化磁盘访问性能、如何用冗余保证数据可靠"。此外还有设备驱动程序的角色(内核与硬件的适配层)与 I/O 子系统分层(用户层 I/O → 系统调用 → 设备驱动 → 中断处理 → 硬件)。本叶承接文件系统,把数据"持久化"的物理载体与访问路径讲透。

评价

优点

  • CPU 与设备并行:中断/DMA 让 CPU 不必忙等待,I/O 期间可执行其他进程,吞吐量倍增
  • 设备抽象与统一接口:设备驱动屏蔽硬件差异,应用通过 read/write/ioctl 统一访问所有设备
  • 缓冲缓解速度失配:单/双/循环缓冲减少 I/O 次数,平滑 CPU 与设备的速度差,提升吞吐
  • Spooling 虚拟化设备:把独占设备(打印机)改造成共享设备,多进程并发"打印"互不阻塞
  • 磁盘调度优化:SSTF/SCAN 等算法减少寻道距离,缩短平均访问时间
  • RAID 兼顾性能与可靠:条带提速、镜像/校验容错,廉价磁盘组替代昂贵单盘

缺点

  • 中断与上下文切换开销:高频小数据 I/O(如逐字节)会产生大量中断,淹没 CPU(需要缓冲/DMA 缓解)
  • 缓冲占内存且有双倍拷贝:缓冲区占用额外内存,数据常需在用户缓冲↔内核缓冲↔设备间多次拷贝
  • 驱动是内核崩溃主因:驱动运行在内核态,bug 多、质量参差,是 Linux/Windows 蓝屏/kernel panic 的头号元凶
  • 磁盘仍是机械瓶颈:尽管有调度算法,寻道/旋转延迟仍是随机访问的性能天花板(SSD 缓解但仍贵)
  • RAID 有写入惩罚:RAID 5/6 每次写要更新校验,写放大;重建期间性能骤降且有数据丢失风险

本叶地图

  • 入门 —— I/O 设备分类(块/字符/网络)、I/O 控制三方式演进(轮询 → 中断 → DMA)、设备驱动角色
  • I/O 控制方式与缓冲 —— 程序查询(忙等待)、中断驱动、DMA、缓冲(单/双/循环)、Spooling 假脱机
  • 磁盘调度与 RAID —— 磁盘结构、FCFS/SSTF/SCAN/C-SCAN/LOOK、RAID 0/1/5/10、SSD 差异
  • 参考 —— I/O 控制对比表、磁盘调度算法对比表、RAID 级别对比、易错点

幻灯片地址

设备与 I/O 管理

测试题

设备与 I/O 管理测试题