IO设备根据数据的存取和传输进行的分类
一、 常见的I/O设备有哪些?
首先,我们可以按功能直观地列举一些常见的I/O设备:
-
人机交互设备 (Human Interface Devices):
-
输入: 键盘、鼠标、触摸板、触摸屏、麦克风、摄像头、扫描仪。
-
输出: 显示器、打印机、音箱、耳机、投影仪。
-
-
存储设备 (Storage Devices):
- 硬盘驱动器(HDD)、固态硬盘(SSD)、U盘、SD卡、光驱(CD/DVD/Blu-ray)、磁带机。
-
网络通信设备 (Network Communication Devices):
- 网卡(NIC)、调制解调器(Modem)、Wi-Fi适配器、蓝牙适配器。
-
其他设备:
- 各种传感器(如温度、GPS)、时钟、定时器等。
二、 I/O设备的分类、特点及举例
尽管I/O设备五花八门,但从操作系统I/O子系统的角度看,最重要、最根本的分类方式是根据其数据交换的单位和特性来划分。主要分为以下三大类:
1. 块设备 (Block Devices)
-
核心特点:
-
数据单位: 信息存储在大小固定的**块 (Block)**中。块是这类设备进行数据读写的基本单位。
-
可寻址性: 每个块都有自己唯一的地址。你可以直接访问任意一个块,而无需访问它前面的块。
-
访问方式: 支持随机访问 (Random Access) 或直接访问。可以进行
seek
操作来定位到任意块。 -
I/O命令: 其接口中的命令通常是“读/写一整块”或“读/写连续的多个块”。
-
独立性: 通常是可以独立于操作系统工作的设备(例如,你可以把一块硬盘拆下来装到另一台电脑上)。
-
传输速率: 通常较高。
-
-
典型设备举例:
-
硬盘驱动器 (HDD)
-
固态硬盘 (SSD)
-
U盘、SD卡等闪存设备
-
光盘 (CD/DVD/Blu-ray)
-
本质上,所有用于持久化存储、构成文件系统的设备,都是块设备。
2. 字符设备 (Character Devices)
-
核心特点:
-
数据单位: 数据以字符 (Character)或字节 (Byte) 为单位,形成一个数据流。
-
可寻址性: 不可寻址。它不具备块的概念,你无法直接定位到“第n个字节”。
-
访问方式: 主要是顺序访问 (Sequential Access)。数据像水流一样,只能一个接一个地被读取或写入。通常不支持
seek
操作。 -
I/O命令: 其接口中的命令是
get
(获取一个字符)或put
(发送一个字符)。操作系统和库函数通常会对此进行缓冲,使用户可以按行读写。 -
传输速率: 差异极大,从很慢(键盘)到很快(显卡帧缓冲)都有可能。
-
-
典型设备举例:
-
键盘、鼠标: 产生一个字符/坐标的数据流。
-
打印机: 接收一个字符流并打印。
-
串行端口 (COM): 在设备间传输字节流。
-
声卡: 产生或接收音频采样数据流。
-
本质上,所有以数据流方式进行交互的、非存储类的设备,大多属于字符设备。
3. 网络设备 (Network Devices)
-
核心特点:
-
网络设备足够特殊,以至于操作系统通常将其作为独立的一类来处理,而不是简单归为块设备或字符设备。
-
数据单位: 数据以大小可变的网络包 (Packet) 为单位进行交换。
-
寻址方式: 它有自己独特的地址(如MAC地址、IP地址),但这不是块地址。
-
访问方式: 它的接口(API)与前两者完全不同。程序员不使用标准的
read
/write
,而是使用专门的套接字接口 (Socket API),如send()
和receive()
。 -
交互特性: 交互是异步和不可靠的(对于UDP等协议)。数据包可能丢失、乱序或重复。需要复杂的协议栈(如TCP/IP)来处理这些问题。
-
-
典型设备举例:
-
以太网卡 (NIC)
-
Wi-Fi 适配器
-
蜂窝网络调制解调器 (Cellular Modem)
-
总结与对比表格
特性 | 块设备 (Block Device) | 字符设备 (Character Device) | 网络设备 (Network Device) |
---|---|---|---|
基本数据单位 | 块 (Block),大小固定 | 字节/字符 (Byte/Character),形成数据流 | 包 (Packet),大小可变 |
是否可寻址 | 是,每个块都有唯一的地址 | 否 | 是,但使用IP/MAC等网络地址 |
主要访问方式 | 随机访问 (Random Access) | 顺序访问 (Sequential Access) | 面向报文/流 (Message/Stream Oriented) |
标准I/O接口 | read , write , seek |
read , write (通常不支持seek ) |
独立的套接字(Socket)接口 (send , receive ) |
典型设备 | 硬盘 (HDD/SSD)、U盘、光驱 | 键盘、鼠标、打印机、串口 | 网卡、Wi-Fi适配器 |