设备文件和设备驱动程序的区别

MSB*_*MSB 11 linux drivers devices

我是设备驱动程序编程的初学者。

我不明白 Linux 中的设备驱动程序和设备文件之间的区别。

谁能解释一下区别?

Tho*_*man 12

设备驱动程序是一块其操作或控制特定类型的设备的软件。在现代的单片内核操作系统上,这些通常是内核的一部分。许多单体内核,包括 Linux,都采用模块化设计,允许在运行时加载可执行模块。设备驱动程序通常利用此功能,尽管没有什么可以阻止设备驱动程序被编译到内核映像中。

设备文件为就好像它是一个普通的文件显示在文件系统中的设备驱动器的接口。在类 Unix 操作系统中,这些通常位于/dev目录下,也称为设备节点。设备文件可以代表字符设备,它一次发出一个字符的流数据,或允许随机访问数据块的块设备

设备节点由mknod系统调用创建。设备节点公开的内核资源由主要和次要编号标识。通常,主要编号标识设备驱动程序,次要编号标识驱动程序控制的特定设备。

设备文件显示的内容取决于设备驱动程序通过设备文件公开的内容。例如,代表鼠标的字符设备文件将鼠标/dev/input/mice的移动公开为字符流,而代表硬盘块设备文件(例如/dev/sda)则公开了设备内存的可寻址区域。一些设备文件也接受输入,允许用户空间应用程序通过写入设备文件来与设备通信。

  • @MSB 在类 Unix 操作系统中 [_"一切都是文件"_](http://en.wikipedia.org/wiki/Everything_is_a_file)。根据这个原理,设备文件是连接到计算机的设备的文件系统表示。它们的内容取决于设备驱动程序通过它们公开的内容。例如,代表鼠标的字符设备`/dev/input/mice` 将鼠标的移动公开为字符流,而代表硬盘的块设备,如`/dev/sda1`,则公开了可寻址的内存区域。 (2认同)