系统安装时,所有的这些设备文件都是由命令mknod建立的。去建立一个新的名叫 coffee',主设备号为12和从设备号为2的设备文件,只要简单的 执行命令mknod /dev/coffee c 12 2。你并不是必须将设备文件放在目录 /dev中,这只是一个传统。Linus本人是这样做的,所以你最好也不例外。但是,当你测试一个模块时,在工作目录建立一个设备文件也不错。 只要保证完成后将它放在驱动程序找得到的地方。
我还想声明在以上讨论中隐含的几点。当系统访问一个系统文件时, 系统内核只使用主设备号来区别设备类型和决定使用何种内核模块。系统 内核并不需要知道从设备号。内核模块驱动本身才关注从设备号,并用之来 区别其操纵的不同设备。
另外,我这儿提到的硬件是比那种可以握在手里的PCI卡稍微抽象一点的东西。看一下下面的两个设备文件:

你现在立即明白这是快设备的设备文件并且它们是有相同的驱动内核模块来操纵 (主设备号都为2))。你也许也意识到它们都是你的软盘驱动器,即使你实际上只有一个软盘驱动器。为什么是两个设备文件?因为它们其中的一个代表着 你的1.44 MB容量的软驱,另一个代表着你的1.68 MB容量的,被某些人称为“超级格式化”的软驱。 这就是一个不同的从设备号代表着相同硬件设备的例子。请清楚的意识到我们提到的硬件有时可能是非常抽象的。
本文深入探讨了Linux系统中设备文件的创建原理,通过mknod命令建立名为coffee的设备文件,主设备号设为12,从设备号设为2。解释了系统内核如何仅使用主设备号来识别设备类型和决定使用何种内核模块,而从设备号则是由内核模块驱动关注的参数。进一步解析了不同硬件设备可能拥有相同主设备号但不同从设备号的情况,强调了硬件抽象的概念。

1036

被折叠的 条评论
为什么被折叠?



