操作系统设备管理
设备管理是操作系统的重要组成部分,负责对计算机系统中各类输入/输出设备进行统一管理和控制。本文介绍设备的分类方式、四种I/O控制方式及其演进对比、SPOOLing假脱机技术的原理与作用、设备分配与回收的关键机制,并通过例题帮助理解相关概念。
文章目录
一、定义与本质
设备管理是操作系统的重要组成部分,负责对计算机系统中的输入/输出设备进行统一管理和控制。其核心任务是:在为用户程序提供简便、统一的设备使用接口的同时,尽可能提高CPU与I/O设备之间的并行工作程度,从而提升整个系统的效率。
二、设备的分类
1. 按数据传输速率分类
| 类型 | 速率范围 | 典型设备 |
|---|---|---|
| 低速设备 | 几个~几百字节/秒 | 键盘、鼠标、语音输入设备 |
| 中速设备 | 数千~数万字节/秒 | 行式打印机、激光打印机 |
| 高速设备 | 数十万~数兆字节/秒 | 磁盘机、光盘机、磁带机 |
2. 按信息交换单位分类
| 类型 | 特点 | 典型设备 |
|---|---|---|
| 块设备 | 以数据块为单位传输,有结构,可寻址 | 磁盘、磁带 |
| 字符设备 | 以字符流为单位传输,无结构,不可寻址 | 键盘、打印机、终端 |
块设备与字符设备是软考中最重要的设备分类方式。块设备支持随机访问(给定地址即可读写任意块),字符设备则只能顺序读写。
3. 按资源分配方式分类
| 类型 | 特点 | 示例 |
|---|---|---|
| 独占设备 | 在一段时间内只能由一个进程使用 | 打印机、扫描仪 |
| 共享设备 | 允许多个进程并发交叉访问 | 磁盘 |
| 虚拟设备 | 通过技术手段将独占设备改造为逻辑共享设备 | SPOOLing系统下的打印机 |
三、I/O控制方式
CPU与I/O设备之间的数据传输控制方式经历了从低效到高效、从高度依赖CPU到几乎解放CPU的演进过程。
1. 程序直接控制方式(轮询)
CPU不断循环检测设备状态寄存器,当设备就绪时执行数据传输。
| 工作流程 | CPU负责数据传送,设备只负责I/O操作 |
|---|---|
| 优点 | 实现简单,不需要额外硬件支持 |
| 缺点 | CPU利用率极低,CPU与设备完全串行工作 |
| 适用场景 | 早期简单系统,现代系统已淘汰 |
轮询方式可类比“不断看水壶开了没有”,烧水的人(CPU)无法做其他事情,只能守在壶边反复查看。
2. 中断驱动方式
CPU发出I/O指令后继续执行其他任务,当设备完成数据传输时通过中断信号通知CPU处理后续工作。
| 工作流程 | CPU发出指令→执行其他程序→设备完成时发中断→CPU响应中断并处理数据 |
|---|---|
| 优点 | CPU与设备可并行工作,CPU利用率显著提高 |
| 缺点 | 每次数据传输都需中断,频繁中断带来上下文切换开销 |
| 适用场景 | 低速字符设备 |
中断方式可类比“烧水壶带哨音”,烧水者可以去忙别的事,听到哨音(中断)再回来处理。
3. 直接存储器访问方式(DMA)
增设DMA控制器硬件,由DMA控制器接管数据传送工作,CPU只需在传送开始和结束时介入。
| 工作流程 | CPU初始化DMA→DMA控制总线完成数据块传送→传送完成时DMA发中断通知CPU |
|---|---|
| 优点 | 进一步解放CPU,数据传送期间CPU完全不参与 |
| 缺点 | 需要专门的DMA控制器硬件,成本较高 |
| 适用场景 | 块设备的高速数据传输 |
DMA方式可类比“自动烧水装置”,烧水者只需按下开关,装置自动完成烧水并保温,全程无需看管。
4. 通道控制方式
通道是一种专门负责I/O处理的独立处理器,拥有自己的指令系统,可执行通道程序来控制多台设备。
| 工作流程 | CPU发出I/O指令→通道执行通道程序管理设备→操作结束时发中断 |
|---|---|
| 优点 | 高度并行,通道可独立管理一组设备 |
| 缺点 | 硬件结构复杂,成本高 |
| 适用场景 | 大型计算机系统 |
| 类型 | 功能 | 连接设备数 |
|---|---|---|
| 字节多路通道 | 按字节交叉传送,分时服务于多台低速设备 | 多台 |
| 数组选择通道 | 按数组高速传送,一次服务于一台高速设备 | 一台 |
| 数组多路通道 | 按数组高速传送,可交替服务于多台高速设备 | 多台 |
5. 四种方式对比
| 控制方式 | CPU干预程度 | 并行能力 | 硬件成本 | 典型设备 |
|---|---|---|---|---|
| 程序直接控制 | 全程干预 | 无 | 最低 | 已淘汰 |
| 中断驱动 | 每字节/字中断 | 部分并行 | 较低 | 键盘、鼠标 |
| DMA | 仅开始/结束干预 | 高度并行 | 中等 | 磁盘、网卡 |
| 通道 | 极少干预 | 极高并行 | 高 | 大型机外设 |
四、SPOOLing系统(假脱机技术)
1. 定义与本质
SPOOLing(Simultaneous Peripheral Operations On-Line,假脱机技术)是一种通过磁盘作为缓冲,将独占设备改造为可共享的虚拟设备的技术。其核心思想是:用快速的外存空间模拟慢速的独占设备,使每个进程都感觉自己独占了一台设备。
2. 系统组成
| 组成部分 | 作用 |
|---|---|
| 输入井 / 输出井 | 磁盘上开辟的缓冲区,用于暂存输入/输出数据 |
| 输入进程 / 输出进程 | 负责在井和设备间传送数据的后台进程 |
| 井管理程序 | 控制作业与井之间的数据交换 |
3. 打印机SPOOLing示例(经典场景)
在没有SPOOLing时,进程A使用打印机期间,进程B的打印请求必须等待,打印机成为系统瓶颈。
引入SPOOLing后:
- 进程的打印请求不再直接操作打印机,而是将打印数据写入磁盘输出井
- 输出进程在打印机空闲时,从输出井中取出数据并打印
- 用户进程感知为“立即完成”打印(实际是快速写入磁盘)
SPOOLing可类比“饭店外卖系统”,顾客不再在后厨排队等餐,而是下单后离开(写入输出井),后厨按订单顺序做好后由外卖员配送(输出进程打印)。顾客感觉服务很快,但实际烹饪时间并未缩短。
4. 关键要点
- SPOOLing将独占设备改造成了共享设备
- 核心技术是利用磁盘作为缓冲,实现了设备的虚拟化
- 典型的SPOOLing应用包括:打印机共享、远程批处理输入
- 提高了设备利用率,但不能缩短实际I/O时间
五、设备分配与回收
1. 设备分配因素
| 因素 | 说明 |
|---|---|
| 设备固有属性 | 独占设备需互斥分配,共享设备可多进程使用 |
| 分配算法 | 先来先服务、优先级高者优先 |
| 安全性 | 避免因设备分配不当导致死锁 |
2. 设备分配的数据结构
| 数据结构 | 作用 |
|---|---|
| 设备控制表(DCT) | 记录每台设备的状态、类型、等待队列 |
| 控制器控制表(COCT) | 记录控制器的状态和连接情况 |
| 通道控制表(CHCT) | 记录通道的使用状态 |
| 系统设备表(SDT) | 系统中所有设备的全局表 |
3. 逻辑设备与物理设备
用户程序通过逻辑设备名来请求设备,由操作系统建立逻辑设备到物理设备的映射。这种设计带来两大好处:
| 好处 | 说明 |
|---|---|
| 设备独立性 | 程序不依赖具体物理设备,更换设备无需修改程序 |
| 灵活性 | 可根据系统状态将逻辑设备映射到不同的物理设备 |
六、练习
题目1:下列设备中,属于块设备的是( )。
A. 键盘
B. 鼠标
C. 磁盘
D. 打印机
答案:C
解析:块设备以数据块为单位进行传输,支持随机寻址,典型代表是磁盘。键盘、鼠标、打印机都是字符设备,以字符流为单位顺序传输。
题目2:在I/O控制方式中,完全不需要CPU干预的方式是( )。
A. 程序直接控制方式
B. 中断驱动方式
C. DMA方式
D. 不存在完全不需要CPU干预的方式
答案:D
解析:任何I/O控制方式都需要CPU的初始化和结束处理。即使是DMA方式和通道方式,也需要CPU发出启动指令并处理完成中断。“完全不需要CPU干预”的数据传输方式是不存在的。
题目3:SPOOLing技术的主要目的是( )。
A. 提高CPU的处理速度
B. 将独占设备改造成共享设备
C. 增加磁盘的存储容量
D. 减少中断处理次数
答案:B
解析:SPOOLing(假脱机技术)通过在磁盘上建立输入/输出井,将打印机等独占设备逻辑上改造成多进程可共享的设备。它不是提高CPU速度,也不是增加磁盘容量。
题目4:以下关于DMA方式的描述中,错误的是( )。
A. DMA方式需要在内存和设备之间建立直接数据通路
B. DMA方式的数据传送过程不需要CPU干预
C. DMA方式的数据传送完成后通过中断通知CPU
D. DMA方式适用于字符设备的低速数据传输
答案:D
解析:DMA方式适用于块设备的高速数据传输(如磁盘),而不是低速的字符设备。字符设备通常使用中断驱动方式。A、B、C描述均正确。
题目5:在采用SPOOLing技术的系统中,用户的打印请求被系统接收后,系统会( )。
A. 立即分配打印机给用户
B. 将打印数据写入内存缓冲区
C. 将打印数据写入磁盘输出井
D. 让用户进程等待直到打印机空闲
答案:C
解析:SPOOLing系统中,用户进程的打印数据被快速写入磁盘输出井,进程即可继续执行,无需等待物理打印机。之后由输出进程在后台将输出井数据送往打印机打印。
题目6:通道是一种特殊的( )。
A. I/O指令
B. 设备控制器
C. 处理器
D. 中断向量
答案:C
解析:通道是一种专门负责I/O处理的独立处理器,拥有自己的指令系统(通道指令),可以执行通道程序控制多台设备的数据传输。它与CPU共享内存,但可以独立运行。
题目7:操作系统中引入逻辑设备名的主要作用是( )。
A. 提高设备利用率
B. 实现设备的独立性
C. 加快数据传输速度
D. 减少设备中断次数
答案:B
解析:逻辑设备名将用户程序与具体物理设备分离,实现了设备独立性(设备无关性)。当物理设备变更时,只需修改逻辑名到物理名的映射,用户程序无需改动。
题目8:某计算机系统采用中断驱动I/O方式,CPU每处理一次中断平均需要0.2ms。若某字符设备的数据传输速率为100字符/秒,每传输一个字符产生一次中断,则CPU用于处理该设备I/O的时间占CPU总时间的比例为( )。
A. 0.02%
B. 0.2%
C. 2%
D. 20%
答案:C
解析:
设备传输速率 = 100字符/秒,即每秒产生100次中断
每次中断处理时间 = 0.2ms = 0.0002秒
每秒中断处理总时间 = 100 × 0.0002 = 0.02秒
占CPU时间比例 = 0.02 / 1 = 2%
openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐



所有评论(0)