分类:目前流行的对于linux驱动进行分类的方法常常把驱动分为字符设备驱动、块设备驱动、网络设备驱动。
字符设备:字符设备是一种按字节来访问的设备(PS:即字符设备是以字节为最小访问单位,不可能出现比自己小的方式,如位等来访问设备),字符驱动则负责驱动字符设备,这样的驱动通常实现open、close、read和write系统调用。
块设备:在大部分的UNIX系统中,块设备不能按字节处理数据,只能一次传输一个或多个长度是512字节(或一个更大的2次幂的数)的整块数据。而linux则允许块设备传输任意数目的字节。因此,块和字符设备的区别仅仅是驱动的与内核的接口不同。(字符设备和块设备还有一个区别是,字符设备不能做到随机访问,块设备能够做到随机的访问。)
网络设备:任何网络事务都通过一个接口来进行,一个接口通常是一个硬件设备(eth0),但是它也可以是一个纯粹的软件设备,比如回环接口(lo)。一个网络接口负责发送和接收数据报文。