日期:2014-05-16  浏览次数:20987 次

请教一下"/sys/devices"和"/dev"这两个目录下的文件的区别?
好像没啥区别,都是存放设备的,我刚转到linux来,不熟悉,那位知道的麻烦告知一声,谢谢!!

------解决方案--------------------
open函数打开的就是/dev下面的设备,不过具体区别还没研究过。
------解决方案--------------------
这是内核设备按总线类型分层放置的目录结构, devices 中的所有设备都是连接于某种总线之下,在这里的每一种具体总线之下可以找到每一个具体设备的符号链接,它也是构成 Linux 统一设备模型的一部分;

摘自--Linux 内核/sys 文件系统介绍 - zippyzou的日志 - 网易博客
------解决方案--------------------
/dev 目录是给应用程序使用的
/sys/devices 是给内核使用的

--纯粹个人理解
------解决方案--------------------
参考我在此贴中的回复:
http://topic.csdn.net/u/20120209/11/35ea88d6-dee0-4902-807e-6dfa35487ade.html?61512

------解决方案--------------------
/dev,设备文件存储目录,应用程序通过对这些文件的读写和控制,可以访问实际的设备;
/sys/devices目录,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备;是文件系统管理设备的最重要的目录结构;
/sys/dev下有两个子目录,block和char,存放的是块设备和字符设备的主次号码,形式为(major:minor),它指向/sys/devices目录下的设备。
------解决方案--------------------
探讨

非常感谢楼上的回复,那么再请教下:
对一个具体的设备来说,是不是既可以创建设备文件到/dev目录下,也可以创建到/sys/devices目录,还是说有些设备只能创建到/dev下,而另外一些只能创建到/sys/devices目录????

------解决方案--------------------
dev下存放设备文件的。
------解决方案--------------------
1、/dev 下放的是设备文件,是由应用层mknod创建的文件。如果底层驱动对mknod的设备号有对应的驱动,如open等函数,那么应用层open "/dev/**"时,就会调用到底层的驱动。说白了,/dev下放的是内核和应用层交互的文件,让应用层去open,write,poll等。
2、/sys 是个文件系统,你写内核代码时,如果有调用kobj_init等函数,就会在/sys下的相应目录生成相应文件。 它的作用是将内核注册的设备、驱动、BUS连成一个树形结构。 另外,应用层也可以通过读写/sys下的文件和内核进行交互(ktype)。 说白了/sys就是一个树形结构,让你明白内核都有哪些驱动和设备已经bus,方便电源管理。

------解决方案--------------------
跟楼上说的一样


/dev 相当于 c盘,d盘 之类的

/sys/device 相当于 Windows的 “设备管理器” 一样的功能。

明白了?