第12周 星期二 第2大节 设备管理
- 视频:
screen_操作系统与分布式计算_第12周_星期二_第2大节.mp4 - 字幕:
transcripts/第12周_星期二_第2大节.srt
时间轴
[17:56]进入设备管理模块[25:14]设备分类:字符设备/块设备/网络设备[27:35]I/O体系结构:端口、接口、总线、设备控制器[41:12]程序直接控制方式(CPU轮询)[43:40]中断驱动I/O方式[53:29]DMA直接存储器访问[58:44]通道控制方式(I/O处理机)[01:15:50]独占设备 vs 分时共享设备,SPOOLing[01:23:02]I/O软件层次:中断处理→设备驱动→设备无关→用户层[01:49:02]缓冲技术:单缓冲、双缓冲、循环缓冲[02:18:04]磁盘物理结构及访问时间
设备管理概述
设备管理是操作系统最后一大核心功能模块。核心目标:
- 提高CPU与I/O设备的并行程度(CPU高速 vs I/O低速的矛盾)
- 屏蔽设备硬件差异,为上提供统一使用接口
- 设备独立性:上层软件不因底层硬件更换而修改
设备管理主要任务:
- 记录/掌握设备使用状态
- 完成设备的分配与释放
- 缓冲区管理
- 物理I/O操作(驱动程序)
- 提供统一接口、设备访问控制
- I/O缓冲与调度
设备分类
| 类型 | 功能 | 传输单位 | 典型设备 |
|---|---|---|---|
| 字符设备(人机交互) | 人与机器交互 | 字符 | 鼠标、键盘、显示器 |
| 块设备(存储) | 数据读写存储 | 块/扇区 | 硬盘、光盘、U盘 |
| 网络设备 | 网络通信 | 报文 | 网卡 |
I/O体系结构
基本概念
- I/O端口:I/O总线上设备的地址集,每个设备寄存器对应一个端口号
- I/O接口:端口与设备控制器之间的硬件电路
- I/O总线:CPU与I/O设备之间的数据通路
- 设备控制器(I/O固件):介于CPU与设备之间的电子部分
I/O设备组成
- 机械部分:设备本身的外观/机械组件
- 电子部分 = 设备控制器:操作系统实际打交道的对象,负责接收CPU命令、控制机械部分工作
设备控制器寄存器
- 控制寄存器:接收CPU发来的读写指令
- 状态寄存器:记录设备状态(忙/闲/正常/故障)
- 数据缓冲寄存器:暂存传输数据
控制器还负责比特流→字节/块的组装转换。磁盘控制器将串行位流组装为字节块,存入内部缓冲区,校验数据正确性后传入用户缓冲区。
I/O控制方式演变
1. 程序直接控制方式(CPU轮询)
- 工作原理:CPU直接控制I/O全过程(发指令→测试状态→传数据→等待完成)
- 优点:实现简单,无额外硬件
- 缺点:CPU全程等待低速I/O,资源极大浪费
- 示意图:CPU反复检查设备状态寄存器,忙则等待
2. 中断驱动I/O方式
- 工作原理:CPU发指令后即可执行其他任务;设备完成时发中断通知CPU;CPU响应中断、完成数据传输
- 优点:CPU与I/O设备可并行工作,CPU利用率显著提高
- 缺点:CPU仍需参与每次数据传输(通过寄存器转发),数据量有限,频繁中断对磁盘等高速设备效率仍低
3. DMA方式(直接存储器访问)
- 工作原理:
- CPU向DMA控制器发送指令(操作类别、设备地址、内存缓冲区地址、数据量)
- CPU转去做其他工作
- DMA接管总线控制权,直接在外设与内存之间传输数据(不经过CPU寄存器转发)
- 传输完成后DMA向CPU发中断报告
- 优点:CPU只干预开始和结束,数据传输无需CPU参与
- 应用:磁盘访问均采用DMA方式。DMA控制器可集成于磁盘控制器或主板共享
4. 通道控制方式(I/O处理机)
- 本质:通道是一个专用的I/O处理机(简单处理机),聚焦于执行I/O操作
- 工作原理:
- CPU发出一条I/O指令,给出通道程序的首地址
- 通道读取通道程序,自行执行I/O操作
- 完成后通道与设备一起发中断报告CPU
- 与DMA区别:通道有自己的指令系统,可以执行通道程序;一个通道可服务多个设备
- 优点:进一步减少CPU干预,CPU与通道可并行,不同通道及外设间也可并行
- 通道类型:
- 字节多路通道:连接慢速设备(键盘、打印机)
- 数组多路通道:连接高速存储设备(磁盘)
- 选择通道
独占设备 vs 分时共享设备 & SPOOLing
独占设备
- 一次只能由一个进程使用(如打印机)
- 申请时必须检查设备状态:空闲→分配,占用→阻塞等待
分时共享设备
- 可以交替服务多个进程的I/O请求(如磁盘)
- 每次I/O操作独立可中断,不同进程的I/O请求可交错执行
- 申请时无需检查占用状态,只需增加使用者计数
SPOOLing(假脱机技术)
- 核心思想:用外存(磁盘)空间把独占设备改造为逻辑上可共享的虚拟设备
- 工作流程(以打印机为例):
- 打印任务并非直接发送给打印机
- 在磁盘上开辟缓冲池(输入井/输出井)
- 打印数据先写入磁盘缓冲池
- 打印守护进程按顺序从缓冲池取出文件逐项打印
- 效果:物理上独占的打印机在用户看来可以共享(多个程序可同时提交打印任务)
I/O软件层次结构
┌──────────────────────────────────────┐
│ 用户层(系统调用接口) │ ← 申请/读/写/释放设备
├──────────────────────────────────────┤
│ 设备无关I/O软件(设备独立层) │ ← 设备名→驱动映射、访问控制、缓冲管理
├──────────────────────────────────────┤
│ 设备驱动程序 │ ← 每类设备对应一个,与硬件紧密相关
├──────────────────────────────────────┤
│ 中断处理程序 │ ← 响应设备中断、报告完成
└──────────────────────────────────────┘
中断处理程序(最底层)
- 设备完成I/O后产生中断,CPU响应后执行
- 检查设备状态:正常→唤醒等待进程;错误→重试或向上报告
- 对共享设备:从请求队列取下一个请求包继续执行
设备驱动程序
- 操作系统底层唯一了解设备控制器细节的软件模块
- 核心功能:设备初始化、启动数据传输、处理中断
- 工作过程:将设备无关层的抽象请求转化为具体物理操作(如磁盘:定位柱面/磁道/扇区)
- 将I/O请求封装为请求包,排入设备请求队列
- 独占设备:申请失败时挂起进程;共享设备:排队等待
- 驱动程序可动态加载/卸载(即插即用)
设备无关I/O软件(设备独立层)
- 执行适用于所有设备的公共I/O功能
- 核心任务:
- 设备命名与映射:设备名 → 设备驱动程序
- 设备访问控制:权限检查
- 缓冲管理:预读(read ahead)与滞后写(delayed write)
- 提供统一逻辑块尺寸
- 存储设备的块分配
- 出错处理:非操作故障(如磁盘物理损坏)向上报告
用户层
- 系统调用接口:申请设备、读设备、写设备、释放设备
- 字符设备:通过设备名直接调用(如
printf默认输出到显示器,scanf默认从键盘读入) - 块设备:通常通过文件系统间接访问;DBMS可绕过文件系统直接操控磁盘以提高效率
- 网络设备:通过 socket/套接字等独立API访问
缓冲技术
目的
- 平衡CPU处理速度与I/O传输速度之间的差距
- 以空间换时间,提高I/O吞吐率
缓冲类型
- 单缓冲:OS在内核空间分配一个缓冲区;实现预读和滞后写
- 双缓冲:用户数据区↔缓冲区、缓冲区↔外设之间的数据交换可并行进行
- 循环缓冲:多个缓冲区构成环形,典型应用为生产者-消费者模型
预读与滞后写
- 预读(read ahead):提前将外存数据读入缓冲区,CPU访问时无需等待
- 滞后写(delayed write):写数据先存入缓冲区,缓冲满后再一次性写出
I/O请求完整流程(以读文件为例)
- 用户进程发读文件系统调用
- 设备无关I/O软件检查参数正确性
- 检查高速缓存中是否有目标数据(有则直接返回,效率高)
- 无缓存 → 将设备逻辑名转化为物理名,检查访问权限
- 封装I/O请求包,排入设备请求队列,阻塞当前进程
- 磁盘驱动程序获取请求,分配缓冲区,向磁盘控制器发启动读命令
- 磁盘控制器控制设备通过DMA传输数据(一个扇区为单位)
- 传输完成 → 控制器发中断
- CPU响应中断,调用中断处理程序
- 检查状态:正确 → 数据传入用户进程空间,唤醒等待进程;错误 → 重试(若干次仍错则报告故障)
磁盘物理结构与访问时间
物理结构
- 多个盘面(platter),每个盘面对应一个磁头
- 每个盘面有若干磁道(track)/ 柱面(cylinder)
- 每个磁道划分为若干扇区(sector),每次读写以扇区为单位
磁盘地址组成
- 盘面号 → 磁道号(柱面号) → 扇区号
磁盘访问时间
访问时间 = 寻道时间 + 旋转延迟 + 传输时间
| 时间分量 | 说明 | 软件可优化? |
|---|---|---|
| 寻道时间 | 磁头移动到目标磁道/柱面 | ✅ 通过调度策略减少磁头移动距离 |
| 旋转延迟 | 等待目标扇区旋转到磁头下 | ✅ 可优化 |
| 传输时间 | 数据从盘面读出传输 | ❌ 由物理特性决定 |
寻道时间占比最大,OS通过磁盘调度策略(下节课)合理安排I/O请求顺序以最小化寻道时间。
I/O硬件发展脉络
CPU直接控制 → I/O指令引入 → 中断机制 → DMA → 通道(I/O处理机)
每一步都进一步将CPU从I/O操作中解放出来,提高CPU与I/O设备的并行程度。
考试/复习重点
- 四种I/O控制方式对比:程序直接控制→中断→DMA→通道
- DMA与通道的区别(DMA:固定功能控制器;通道:可编程I/O处理机,可服务多设备)
- I/O软件四层架构及各层职责
- SPOOLing技术原理(用磁盘空间将独占设备虚拟为共享设备)
- 缓冲技术:单缓冲/双缓冲/循环缓冲 + 预读与滞后写
- 磁盘访问时间公式 = 寻道 + 旋转延迟 + 传输(重点是寻道时间优化)
- 设备控制器三大寄存器:控制、状态、数据缓冲
- 设备分类:字符/块/网络设备
作业
- 无
其他需要回看的片段
[53:29]DMA方式讲解[01:15:50]SPOOLing打印机假脱机原理