目录
I/O设备的分类
按传输速率
- 低速设备:如鼠标、键盘,它们的传输速率相对较低,适用于简单、少量的数据传输。
- 中速设备:例如激光打印机,传输速率适中,适用于中等规模的数据处理。
- 高速设备:如磁盘、光盘,传输速率高,适用于大量数据的快速处理。
按信息交换单位
- 块设备:可寻址,能够随机读写任意块,如磁盘。它们以数据块为单位进行信息交换。
- 字符设备:不可寻址,通常采用中断I/O方式,如打印机。它们以字符为单位进行信息交换。
I/O设备的组成
机械部件
I/O设备通常包含机械部件,如磁盘的读写头、打印机的打印头等。
电子部件
- I/O接口(设备控制器):负责与CPU和设备之间的通信。
功能
- 接收识别CPU发来的命令。
- 数据交换(设备与控制器、控制器与主存)。
- 标识和报告设备状态。
- 地址识别。
- 数据缓冲。
- 差错控制。
- I/O端口:设备控制器中可被CPU直接访问的寄存器。
分类
- 数据寄存器。
- 状态寄存器。
- 控制寄存器。
方式
- 独立编址。
- 统一编址。
I/O控制方式
程序直接控制方式
在程序直接控制方式中,CPU直接管理I/O操作,通常是通过执行特定的I/O指令来实现数据的传输。这种方式下,CPU在数据传输期间会持续监控I/O设备的状态,直到传输完成。
- 读写单位:字(Word)。这意味着CPU每次读写操作都是以一个字为单位,这个字的长度通常是CPU的字长,比如32位或64位。
特点:
- 简单性:实现起来比较简单,适用于简单的I/O操作。
- 效率低:CPU在等待I/O操作完成时,不能进行其他任务,导致CPU利用率低。
中断驱动方式
中断驱动方式是一种更为高效的I/O控制方式。在这种方式下,CPU发起I/O操作后可以继续执行其他任务。当I/O设备准备好数据传输时,它会发送一个中断信号给CPU,CPU响应中断并处理数据传输。
- 读写单位:字(Word)。与程序直接控制方式类似,中断驱动方式也是以字为单位进行数据的读写。
特点:
- 效率高:CPU在等待I/O操作完成时可以执行其他任务,提高了CPU的利用率。
- 响应中断:需要硬件和操作系统支持中断机制。
DMA方式
DMA(Direct Memory Access)方式是一种允许I/O设备直接与内存进行数据传输的技术,而无需CPU的介入。DMA控制器负责管理数据传输,从而释放CPU进行其他计算任务。
- 读写单位:数据块(Block)。DMA操作通常以数据块为单位进行,这意味着每次传输可以是一个或多个连续的字,而不是单个字。
特点:
- 高速传输:由于DMA直接在内存和I/O设备之间传输数据,因此可以显著提高数据传输速率。
- 减少CPU负载:CPU只需初始化DMA传输,之后就可以处理其他任务,直到传输完成。
I/O软件层次结构
用户层I/O软件
- 用户程序
- 库函数
系统调用层
- 系统调用接口
I/O调度层
- 设备无关的I/O软件
- 设备驱动程序接口
设备驱动层
- 设备驱动程序
- 中断服务例程
硬件层
- 硬件设备
- 设备控制器
应用程序I/O接口
字符设备接口
- get/put系统调用:读写一个字符。
块设备接口
- read/write系统调用:向块设备读写多字符。
- seek:修改指针位置。
网络设备接口(网络套接字接口)
- socket:创建一个网络套接字。
- bind:套接字绑定某“端口”。
- connect:套接字连接到远程地址。
- read/write:从套接字读/写数据。
阻塞/非阻塞I/O
- 阻塞I/O:程序发出I/O系统调用后,进程转为阻塞态。
- 非阻塞I/O:程序发出I/O系统调用后,无需阻塞。