I/O设备的概念和分类
什么是I/O设备
"I/O"就是"输入/输出"设备.
鼠标,键盘:典型的输入型设备
显示器:输出型设备
移动硬盘:既可以输入、又可以输出设备
Unix将外部设备抽象为特殊的文件,用户可以使用与文件操作相同的方式对外部文件设备进行操作。
Write操作:向外部设备写出数据
Read操作:向外部设备读入数据
I/O设备分类
按照使用特性
- 人机交互类外部设备[数据传输速度慢]
- 存储设备 [数据传输速度快]
- 网络通信设备 [数据传输速度介于两者之间]
按照传输速度分类
- 低速设备
- 中速设备
- 高速设备
按照信息交换的单位分配
- 块设备[传输速度较高,可寻址,即对它可随机的读写任意一块]
- 字符设备[传输速度慢,不可寻址,通常采用中断驱动方式]
IO设备
机械部件
机械部件主要用来执行具体的I/O操作,比如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂,磁盘盘面。
电子部件(IO控制器、设备控制器)
电子部件通常是一块插入主板扩充槽的印刷电路板
CPU无法直接控制I/O设备的机械部件,因此I/O设备还有一个电子部件作为CPU和I/O设备机械部件之间的"中介",用于实现CPU对设备的控制。
I/O控制器的功能
- 接受和识别CPU发出的命令
- 如CPU发来的read/write命令,I/O控制器中会有相应的控制寄存器来存放命令和参数。
- 向CPU报告设备的状态
- I/O控制器中会有相应的状态寄存器,用于记录I/O设备的当前状态。如1表示空闲,0表示忙碌
- 数据交换
- I/O控制器中会设置相应的数据寄存器。输出时,数据寄存器用于暂存CPU发来的数据,之后再由控制器传送设备。输入时候,数据寄存器用于暂存设备发来的数据,之后CPU从数据寄存器中取走数据。
- 地址识别
- 类似于内存的地址,为了区分设备控制器中的各个寄存器,也需要给各个寄存器设备一个特定的地址.I/O控制器通过CPU提供的"地址"来判断CPU要读/写的是哪个寄存器。
I/O控制器的组成
- CPU与控制器的接口
- 用于实现CPU和控制器之间的通信。CPU通过控制线发出命令,通过地址线指明要操作的设备,通过数据线来取出数据或者放入数据。
- 涉及到控制线和地址线以及数据总线
- I/O逻辑
- 负责接受和识别CPU的各种命令(如地址译码),并负责设备发出的命令
- 控制器与设备的接口
- 用于实现控制器和设备之间的通信
- 一个I/O控制器可能对应多个设备
- 数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器会对应一个具体的设备),且这些寄存器都要有相应的地址,才能方便CPU操作。有的寄存器会让这些寄存器占用内存的一部分,称为内存映像I/O;另一些计算机则采用I/O专用地址,即寄存器独立编 址
- 内存映射I/O,控制寄存器中的寄存器与内存地址统一编址
- 优点:简化了指令,可以采用对内存进行操作的指令来对控制器进行操作。
- 寄存器独立编址:控制器中的寄存器使用单独的地址
- 缺点:需要设置专门的指令来实现对控制器的操作,不仅要指明寄存器的地址,还要指明寄存器的编号。