外设IO原理
外设一般是指除了CPU、内存之前的其他接入到计算机的设备,比如硬盘、光驱、鼠标、键盘、打印机等。一般软件编程领域的同学关心的I/O,是I/O硬件提供给软件的接口,如硬件能够接收的命令、它能够完成的功能以及它能够报告的错误。
IO设备分类
I/O设备大概分为两种:块设备和字符设备。
块设备:信息存储在固定大小的块中,传输以一个或多个完整(连续的)块为单位。块设备特征是每个块都可以独立于其他块进行读写。其中硬盘、CD-ROM和USB是最常见的块设备。
字符设备:以字符为单位发送或者接收一个字符流,而不考虑任何块结构。字符设备不可寻址,没有寻道操作。打印机、网络接口、鼠标以及大多数与磁盘不同的设备都可以看作是字符设备。
问题:这种分类并不完美。如时钟既不是块设备也不是字符设备。内存映射的显示器也不适用于这一分类。
IO设备核心结构
I/O设备一般是由机械部分和电子部分构成。
电子部分被称为设备控制器或者适配器。对于个人设备而言,一般是主板上的芯片或者插入PCI扩展槽中的印刷电路板。控制器通常有一个插口,通往设备的电缆可以插到这个插口中,很多控制器可以控制2、4甚至8个相同设备。会有各种适合这个接口标准的控制器或设备,如IDE、SATA、SCSI或USB等接口的磁盘驱动器。
控制器和设备之间一般通过串行的位流进行数据传输,控制器负责把串行的位流转换为字