设备管理

输入/输出系统

I/O设备分类

按照数据传输率分类

  • 低速设备:几个到几百字节/秒,如鼠标、键盘。
  • 中速设备:几千到几十万字节/秒,如打印机、扫描仪。
  • 告诉设备:大于等于几百万字节/秒,如磁盘、光盘

按照信息交换的单位分类

  • 块设备:以数据块为单位传输,如磁盘,U盘
  • 字符设备:以字符为单位传输,如终端,打印机

按设备共享属性分类

  • 独占设备:同一时段只允许一个进程使用,如打印机
  • 共享设备:允许多个进程同时访问的设备,如磁盘
  • 虚拟设备:通过软件手段将独占设备“逻辑共享”,如 SPOOLing 技术中的虚拟打印机

设备控制器

系统接口 — I/O逻辑 — 设备接口

系统接口(设备控制器与CPU间的接口)

  • 向 CPU 提供用于控制和状态查询的接口
  • 接收 CPU 发送的 I/O 控制命令
  • 向 CPU 报告设备状态和中断信息

设备接口(设备控制器与设备间的接口)

  • 连接具体 I/O 设备
  • 接收或发送设备的数据
  • 控制设备的启动、停止及工作方式

I/O控制逻辑

  • 解释 CPU 发出的 I/O 命令
  • 产生对设备的控制信号
  • 完成数据传送的时序与协调
  • 处理错误和异常情况

I/O通道

通道概念

控制设备与内存进行数据交换的专用处理机

通道类型

  • 字节多路通道:分时控制多台低速或者中速设备
  • 数组选择通道:串行多台高速设备
  • 数组多路通道:分时控制多台高速设备

通道程序

保存在主存中,由一系列通道指令构成。

I/O控制方式

程序I/O方式

CPU 通过不断轮询设备状态寄存器,判断设备是否准备好,然后逐字节或逐块进行数据传送。

步骤:

  • 选中设备,向设备控制器发送指令,启动设备
  • 令控制器状态寄存器busy=1
  • 循环检查busy值直到0,同时设备控制器执行I/O操作完成后busy=0
  • CPU传输到内存

特点:CPU与设备完全串行工作,设备速度远低于CPU,严重降低了CPU的利用率。

中断驱动I/O方式

CPU 不再轮询,设备准备好时向 CPU 发送中断信号,CPU 响应中断并处理 I/O。

步骤:

  • 选中设备,向设备控制器发送指令,启动设备,令状态寄存器允许中断位=1
  • 令控制器状态寄存器busy=1
  • 进程进行堵塞使CPU去干其他的;同时设备控制器执行I/O操作完成后向CPU发起中断
  • CPU响应中断后传输到内存

特点:CPU与设备并行工作,显著提高了CPU的利用率,至今仍然是字符设备的 I/O控制方式。

DMA I/O控制方式

专门的 DMA 控制器负责在 主存与 I/O 设备之间直接传送数据,CPU 只负责启动和结束控制。

步骤:

  • DMA传送前预处理,CPU初始化DMA控制器,并启动设备
  • DMA控制器完成设备与主存的数据传送
  • CPU响应终端进行后处理

特点:数据传输基本单位是数据块,直接在设备和内存之间进行,传输期间不需要CPU干预。

I/O通道控制方式

步骤:

  • CPU根据用户I/O请求生成通道程序,放到内存中设置首地址CAW
  • CPU启动指令,启动通道工作
  • 通道向CPU发送应答信号,通知启动指令完成,CPU可继续执行其他
  • 通道不断读取程序中指令进行执行完成后通知CPU

特点:可以理解为 DMA 是“通道思想的简化版或高度定制版”,相比DMA干预更少

缓冲管理

缓冲缓和CPU与IO设备之间速度不匹配的问题

提高CPU与ID设备之间的并行性,减少对CPU的中断频率,放宽对CPU中断响应时间的限制

缓冲类型

全缓冲

数据先积累在缓冲区,满后才执行实际 I/O,典型用于磁盘文件读写,适合大量数据,提高性能。

行缓冲

遇到换行符才执行 I/O,输入先存入缓冲区,按回车或换行时才操作,典型用于键盘输入。

无缓冲

不使用缓冲,数据直接输出,典型为 stderr,便于错误信息即时显示。

缓冲实现机制

单缓冲

只有一个缓冲区,数据先存入缓冲区,再一次性写入或读出。实现简单,但 I/O 可能被阻塞,效率较低。

双缓冲

使用两个缓冲区,一边进行 I/O 操作,另一边进行数据准备(写入或读取)。I/O 与数据处理可以并行,提高性能。

循环缓冲

缓冲区首尾相连,形成环状结构,支持连续读写,常用于流式数据处理或实时数据传输,避免频繁拷贝。

缓冲池

维护多个缓冲块的集合,动态分配给不同任务使用,适合多线程或高并发场景,提高 I/O 利用率和灵活性。