一、I/O设备
1.1 I/O设备的基本概念
- I/O,Input/Output:输入/输出
- I/O 设备:将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件
- UNIX系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作
1.2 I/O设备的分类
- 按使用特性分:
- 人机交互类外设(数据传输速度慢):鼠标、键盘、打印机等——用于人机交互
- 存储设备(数据传输速度快):移动硬盘、光盘等——用于数据存储
- 网络通信设备(数据传输速度介于上述二者间):调制解调器等——用于网络通信
- 按传输速率分:
- 低速设备:鼠标、键盘等——传输速率为每秒几个到几百字节
- 中速设备:如激光打印机等——传输速率为每秒数千至上万个字节
- 高速设备:如磁盘等——传输速率为每秒数千字节至千兆字节的设备
- 按信息交换的单位分:
- 块设备(传输速率较高,可寻址,即对它可随机地读/写任一块):如磁盘等——数据传输的基本单位是“块”
- 字符设备(传输速率较慢,不可寻址,在输入/输出时常采用中断驱动方式):鼠标、键盘等——数据传输的基本单位是字符
二、I/O控制
2.1 I/O控制器
- I/O设备:机械部件、电子部件(I/O控制器、设备控制器)
- 机械部件主要用来执行具体I/O操作,如鼠标/键盘的按钮、显示器的LED屏、移动硬盘的磁臂、磁盘盘面
- 电子部件通常是一块插入主板扩充槽的印刷电路板
- CPU无法直接控制I/O设备的机械部件,因此,I/O设备需要一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制,即I/O控制器,又称设备控制器
- CPU控制I/O控制器,又由I/O控制器来控制设备的机械部件
2.1.1 I/O控制器主要功能
- 接受和识别CPU发出的命令:如CPU发来的 read/write 命令,I/O控制器中会有相应的控制寄存器来存放命令和参数
- 向CPU报告设备的状态:I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态,如:1表示空闲,0表示忙碌
- 数据交换:I/O控制器中会设置相应的数据寄存器
- 输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备
- 输入时,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据
- 地址识别:类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设置一个特定的“地址”;I/O控制器通过CPU提供的“地址”来判断CPU要读/写的是哪个寄存器
2.1.2 I/O控制器组成
- 一个I/O控制器可能会对应多个设备
- 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作
2.1.3 两种寄存器编址方式
- 有的计算机会让这些寄存器占用内存地址的一部分,称为内存映像I/O
- 另一些计算机则采用I/O专用地址,即寄存器独立编址
2.2 I/O控制方式
2.2.1 程序直接控制方式
- 完成一次读/写操作的流程(Key word:轮询)
- CPU干预的频率很频繁,I/O操作开始之前、完成之后需要CPU介入,并且在等待I/O完成的过程中CPU需要不断地轮询检查
- 数据传送的单位:每次读/写一个字
- 数据的流向:每个字的读/写都需要CPU的帮助
- 读操作(数据输入):I/O设备 → 内存;
- 写操作(数据输出):内存 → 设备
- 主要缺点和主要优点
- 优点:实现简单;在读/写指令之后,加上实现循环检查的一系列指令即可(因此才称为“程序直接控制方式”)
- 缺点:CPU和I/O设备只能串行工作,CPU需要一直轮询检查,长期处于**“忙等”状态** ,CPU利用率低
2.2.2 中断驱动方式
- 完成一次读/写操作的流程(Key word:中断)
- CPU干预的频率
- 每次I/O操作开始之前、完成之后需要CPU介入
- 等待I/O完成的过程中CPU可以切换到别的进程执行
- 数据传送的单位:每次读/写一个字
- 数据的流向
- 读操作(数据输入):I/O设备 → CPU → 内存
- 写操作(数据输出):内存 → CPU → /O设备
- 主要缺点和主要优点
- 优点:与“程序直接控制方式”相比,在“中断驱动方式”中,I/O控制器会通过中断信号主动报告I/O已完成,CPU不再需要不停地轮询;CPU和I/O设备可并行工作,CPU利用率得到明显提升
- 缺点:每个字在I/O设备与内存之间的传输,都需要经过CPU,而频繁的中断处理会消耗较多的CPU时间
2.2.3 DMA方式
- DMA方式( Direct Memory Access,直接存储器存取):主要用于块设备的I/O控制
- 数据的传送单位是“块”,不再是一个字、一个字的传送
- 数据的流向是从设备直接放入内存,或者从内存直接到设备,不再需要CPU作为“快递小哥”
- 仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
- DMA控制器
- 完成一次读/写操作的流程
- CPU干预的频率:仅在传送一个或多个数据块的开始和结束时,才需要CPU干预
- 数据传送的单位:每次读/写一个或多个块(注意:每次读写的只能是连续的多个块,且这些块读入内存后在内存中也必须是连续的)
- 数据的流向(不再需要经过CPU)
- 读操作(数据输入):I/O设备 → 内存
- 写操作(数据输出):内存 → 设备
- 主要缺点和主要优点
- 优点:数据传输以“块”为单位,CPU介入频率进一步降低;数据的传输不再需要先经过CPU再写入内存,数据传输效率进一步增加;CPU和I/O设备的并行性得到提升
- 缺点:CPU每发出一条I/O指令,只能读/写一个或多个连续的数据块;如果要读/写多个离散存储的数据块,或者要将数据分别写到不同的内存区域时,CPU要分别发出多条I/O指令,进行多次中断处理才能完成
2.2.4 通道控制方式
- 通道:一种硬件,可以理解为是 “弱鸡版的CPU”,通道可以识别并执行一系列通道指令
- 与CPU相比,通道可以执行的指令很单一,并且通道程序是放在主机内存中的,也就是说通道与CPU共享内存
- 完成一次读/写操作的流程
- CPU干预的频率极低,通道会根据CPU的指示执行相应的通道程序,只有完成一组数据块的读/写后才需要发出中断信号,请求CPU干预
- 数据传送的单位:每次读/写一组数据块
- 数据的流向(在通道的控制下进行)
- 读操作(数据输入):I/O设备 → 内存
- 写操作(数据输出):内存 → I/O设备
- 主要缺点和主要优点
- 缺点:实现复杂,需要专门的通道硬件支持
- 优点:CPU、通道、I/O设备可并行工作,资源利用率很高
三、I/O软件层次结构
- I/O软件层次