【Linux设备驱动程序】Chapter 1 - 概述
设备分类
字符设备、块设备、网络接口
字符设备
能够像字节流(类似文件)一样被访问的设备。
字符设备驱动程序通常至少要实现 open、close、read 和 write 系统调用。
举例:字符终端( /dev/console )、串口( /dev/ttyS0 等)...
字符设备文件与普通文件的区别:大多字符设备文件是一个只能顺序访问的数据通道,但也有部分字符设备具有数据区的特性。
块设备
与字符设备的区别在于:块设备的 I/O 操作时传输的是一个或多个完整的数据块,而不是字节流的方式。
网络接口
网络接口可以是物理设备,也可以是软件设备(如 loopback 回环设备)。
由内核中的网络子系统驱动,负责发送和接收数据包,它不需要了解每个事务如何映射到实际传送的数据包。
与字符设备和块设备不同,网络接口不映射为文件系统中的节点,而只分配一个设备名,调用与数据包传输相关的函数而不是 read 等。