任何Linux系统需要与之通信的设备,都需要在内核代码中加入其驱动程序代码。驱动程序代码相当于应用程序和硬件设备的中间人,允许内核与设备之间交互数据。在Linux内核中有两种方法用于插入设备驱动代码:
- 编译进内核的设备驱动代码;
- 可插入内核的设备驱动代码;
Linux系统将硬件设备当成特殊的文件,称为设备文件。设备文件有3中分类:
- 字符型设备文件
- 块设备文件
- 网络设备文件
字符型设备文件是指处理数据是每次只能处理一个字符的设备。大多数类型的调制解调器和终端都是作为字符型设备文件创建的。
块设备文件是指处理数据时每次能处理大块数据的设备,比如硬盘。
网络设备文件是指采用数据包发送和接收数据的设备,包括各种网卡和一个特殊的回环设备。这个回环设备允许Linux系统使用常见的网络编程协议同自身通信。
Linux为系统上的每个设备都创建一种称为节点的特殊文件。与设备的所有通信都通过设备节点完成。每个节点都有唯一的数值对供Linux内核标识它。