在Linux内核中,设备分为几类,最常见的包括字符设备、块设备和网络设备。它们各自有不同的功能和使用场景。下面是对这些设备类型的概念、特点及常见例子的详细说明。
字符设备
字符设备是一个能够像字节流一样被访问的设备,由字符设备驱动程序来实现这种特性。字符设备驱动程序通常至少要实现打开、关闭、读取和写入系统调用。
字符设备是一个顺序访问的,只有在设备响应后才能读到相应信息。
不能随机访问,且每个字符设备都有一个设备号,设备号由主设备号和次设备号组成。常见的字符设备如串口、IIC等。
字符设备的对应的文件都在/dev目录下,每一个文件对应一个硬件。在linux系统中/dev目录下使用ls -l命令查看详细信息,第一个字母“c”为字符设备文件的标识。
特点:
顺序读写:字符设备以字节为单位进行顺序读写,不支持随机访问。
实时性强:通常用于与实时设备交互,适合处理实时数据。
无缓存:字符设备没有类似块设备那样的缓存功能,数据直接传输。
常见例子:
串口设备:如 /dev/ttyS0,用于与串行设备(如调制解调器)进行通信。
终端设备:如 /dev/tty,用于用户与操作系统之间的交互。