Linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中的两种。在2.6内核之前使用的是devfs,而devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,我们知道/dev目录下的每一个文件对应的都是一个设备,而且这些特殊文件是位于根文件系统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。
但是devfs文件系统有一些缺点:(1)比如不确定的设备映射,有时候一个设备映射的设备文件可能不同,比如我们的U盘可能对应sda也可能对应sdb。(2)比如没有足够的主/辅设备号,当设备过多的时候,这会成为一个问题。(3)/dev目录下文件太多而且不能表示当前系统上的实际设备。(4)命名不够灵活,不能任意指定。
在Linux2.6之后,引入了新的文件系统sysfs,它挂载于/sys目录下,跟devfs一样,它也是一个虚拟文件系统,也是用来对系统的设备进行管理的,它把实际链接到系统上的设备和总线组织成一个分级的文件,用户空间的程序同样可以利用这些信息以实现和内核的交互,该文件系统是当前系统上实际设备树的一个直观反应,他是通过kobject子系统来建立这个信息的,当一个kobje