首页/操作系统/05-io/设备管理 🔗 在 Obsidian 中打开
操作系统 · 05-io

设备管理

重要度 ⭐⭐⭐⭐⭐ 操作系统/IO管理IO控制设备驱动DMA通道
速查
CPU 介入逐步减少:轮询每次传输(忙等)→ 中断每次传输 → DMA每块 → 通道每个 I/O 任务;设备分配分静态/动态,SPOOLing 把独占设备虚拟为共享。

速查

项目
核心概念设备管理
关键公式/性质轮询:每次传输(忙等);中断:每次传输(不忙等);DMA:每块传输;通道:每个 I/O 任务。CPU 介入逐步减少
考试频率⭐⭐⭐⭐

I/O 设备分类

按传输单位

类型特点例子
块设备以块为单位传输,可随机访问磁盘、SSD
字符设备以字符为单位传输,顺序访问键盘、鼠标、串口

按传输速率

  • 低速设备:键盘、鼠标(几字节/秒)
  • 中速设备:打印机(几 KB/s)
  • 高速设备:磁盘、网卡(几 GB/s)

按共享属性

  • 独占设备:打印机(一次只允许一个进程使用)
  • 共享设备:磁盘(可并发访问)
  • 虚拟设备:通过 SPOOLing 将独占设备虚拟为共享设备

I/O 控制方式

1. 程序直接控制方式(轮询)

CPU ──命令──→ 设备控制器
     ←状态── 
  (反复轮询直到完成)

CPU 不断查询设备状态,CPU 利用率低(忙等待),实现简单。

2. 中断驱动方式

CPU ──命令──→ 设备控制器
       │ CPU 去执行其他进程
       ←──中断── 设备完成
  CPU 处理中断,读取数据

设备完成时发中断通知 CPU,不忙等待;每次传输仍需 CPU 介入(按字/字节)。

3. DMA 方式(直接内存访问)

  • 数据直接在设备和内存间传输,不经过 CPU
  • CPU 只在传输开始和结束时介入;以块为单位传输
DMA 寄存器说明
MAR(内存地址寄存器)数据传输的内存目标地址
DC(数据计数器)剩余传输字节数
DR(数据寄存器)暂存传输数据
CR(命令/状态寄存器)控制命令和状态

4. 通道方式

通道是专用处理器,有自己的指令集;CPU 只需启动通道,通道独立完成 I/O,一个通道可控制多个设备控制器。

I/O 控制方式对比

方式CPU 介入频率传输单位并行性
轮询每次传输字/字节
中断每次传输字/字节有限
DMA每块传输较好
通道每个 I/O 任务一组块最好

设备控制、设备驱动程序

设备控制器

┌──────────────────────────┐
│       设备控制器           │
│  控制逻辑(CPU接口)        │
│  状态/控制寄存器           │
│  数据缓冲区               │
│  设备接口                 │
└──────────────────────────┘

功能:① 接收和识别 CPU 命令;② 数据缓冲;③ 控制设备操作;④ 向 CPU 报告设备状态。

设备驱动程序

用户程序 → 系统调用接口 → 设备无关软件 → 设备驱动程序 ←与控制器交互 → 设备控制器 → 硬件设备

功能:接收上层抽象 I/O 请求 → 转为具体的设备控制命令 → 启动设备操作 → 处理设备中断。特点:与硬件紧密相关,每类设备对应一个驱动,是 OS 中唯一了解设备细节的部分。

SPOOLing 技术

利用磁盘作为缓冲,将独占设备虚拟为共享设备。

进程1 ──→ 输出到磁盘缓冲区
进程2 ──→ 输出到磁盘缓冲区         SPOOLing守护进程
进程3 ──→ 输出到磁盘缓冲区  →  打印机(独占)

组成:输入井(磁盘,模拟输入设备)、输出井(磁盘,模拟输出设备)、输入进程、输出进程。优点:将独占设备虚拟为共享设备、提高设备利用率、实现设备的虚拟化。

设备分配与回收

设备控制表(DCT)

记录每个设备的属性和状态。

设备分配策略

策略说明评价
静态分配进程运行前分配,结束后释放安全但利用率低
动态分配需要时分配,使用完释放利用率高但可能死锁

设备分配考虑因素

  1. 设备固有属性(独占/共享)
  2. 设备分配算法
  3. 安全性(防止死锁)
要点动态分配提高利用率,但需防止因互相等待形成循环等待而死锁。

记忆卡片

四种 I/O 控制方式的 CPU 介入频率?
轮询:每次传输(忙等);中断:每次传输(不忙等);DMA:每块传输;通道:每个 I/O 任务。CPU 介入逐步减少。
DMA 和中断的本质区别?
中断每次传一字节/字都要 CPU 介入;DMA 数据直接在设备与内存间传输,CPU 只在开始设置和结束中断时介入。
SPOOLing 解决什么问题?
将独占设备(如打印机)虚拟为共享设备;用磁盘缓冲,多进程可同时“使用”设备,由守护进程实际操作。
通道和 DMA 的区别?
DMA 需 CPU 设置参数;通道有自己的指令集(通道程序),CPU 只需启动,通道独立完成整个 I/O 任务。
DCT 的作用?
设备控制表,记录每个设备的属性和状态,用于设备分配与回收。

交互动画 · 设备分配策略

设备控制表 DCT 分配 打印机 · 独占状态:空闲 磁盘 · 共享状态:空闲 声卡 · 独占状态:空闲 进程 P请求设备 橙色 = 已分配的独占/共享设备路径 | 紫 = 回收/释放
点击分配策略,观察 DCT 中设备的分配与释放
静态分配安全但利用率低;动态分配利用率高但可能死锁

相关知识点

io-control-methods buffer-management disk-scheduling-algorithm

↑ 以上为站内 HTML 相对链接(纯网页可浏览);本页右上「在 Obsidian 中打开」跳回源笔记。