我是设备驱动程序编程的初学者。
我不明白 Linux 中设备驱动程序和设备文件之间的区别。
谁能解释其中的区别吗?
答案1
A设备驱动是操作或控制特定类型设备的软件。论现代,整体内核操作系统这些通常是内核的一部分。许多单片内核(包括 Linux)都采用模块化设计,允许在运行时加载可执行模块。设备驱动程序通常利用此功能,尽管没有什么可以阻止设备驱动程序编译到内核映像中。
A设备文件是设备驱动程序的接口,它出现在文件系统中,就好像它是普通文件一样。在类 Unix 操作系统中,这些通常位于该/dev
目录下,也称为设备节点。一个设备文件可以代表字符设备,一次发出一个字符的流数据,或者块设备允许随机访问数据块。
设备节点是由mknod
系统调用。设备节点暴露的内核资源由一个标识主要和次要号码。通常,主设备号标识设备驱动程序,次设备号标识驱动程序控制的特定设备。
设备文件包含的内容取决于设备驱动程序通过设备文件公开的内容。例如,代表鼠标的字符设备文件/dev/input/mice
将鼠标的移动公开为字符流,而代表硬盘的块设备文件,例如/dev/sda
,公开设备内存的可寻址区域。某些设备文件还接受输入,允许用户空间应用程序通过写入设备文件来与设备进行通信。
答案2
补充托马斯·尼曼所说的,
在使用任何设备之前,必须将其挂载到文件系统对象上,因为Linux中的一切都是文件,内部的一些设备会自动挂载,如USB、硬盘等。
为了让新设备与系统交互,它具有设备驱动程序,一个使用设备文件的软件程序。
所以基本上设备文件提供了设备驱动程序的接口。你可以使用c在linux中编写自己的设备驱动程序。