linux sysfs (5)

如果我们把device和driver比喻成员工,那么,kobject和kset就是人力资源部所保存的所有员工的个人信息,包括笔试面试成绩,考核等,这些东西可能是以纸质文档保存。那么,sysfs就可以比喻成,在网站后台数据库中间的所有员工信息,没有前面说的纸质信息那么多,不过可以看出整体结构信息。
也就是说我们从console上面输入ls /sys -l,显示的东西是一个确确实实的文件系统,不过属于ram文件系统,这个ram文件系统,就是对应着上面公司模型的后台数据库。然这个ram文件系统又是对kset和kobject的东西的抽象。
我们对于一门新的知识需要回答如下几个问题:
1)施主从哪里来?2)施主到哪里去?3)施主有何贵干?
从哪里来,动态观察他的生成?
到哪里去,目的和动机是什么?
如果要达到目的,我们应该怎么做?

首先我们要明白sysfs是ramsys格式的,这是什么意思?要说到ramsys必须说到ramdisk,ramdisk在很早的linux里面,还有dos里面就已经实现了。其实想都能想到,这种格式不过就是把软盘等文件的镜像文件直接放到内存里面,然后把读写硬盘的相应代码换成读写内存的方式就ok了。
dos直接换中断,linux复杂一些,要换驱动就可以了。ramsys是在ramdisk上面做了一点小小的改造,就是把它从原来的固定大小修改成不固定大小,可变大小就ok了。这就是sysfs,可以把sysfs给dd出来,然后放到实际的存储上,不过这需要格式的稍微变化。

VFS基本基本的概念dentry,inode和file;dentry就是目录,有树形的信息,inode节点就是文件放置的信息,而file是实际的文件存储地方。
例如,可以简历上写我发表多少篇论文,这个论文可能会有关联关系,放在我的简历上第一页上。
第二页上,把每一篇论文放的网址都写好出来,有些文章可能分成好几个部门,在不同网站上保存。
这样就形成了整个文件系统的结构。

就像公司部门创建或者新员工入职的方法一样,在部门创建的时候,除了要去人力资源部,等登记相关信息之外(比如这里对外的网站上信息),一定还有一个去sysfs登记的地方。
具体部门等后面讲代码,在仔细分析。

1)从哪里来:在系统boot过程中,会建立一个整体的所有设备的sysfs:如果后面后设备动态加入,会动态更新这个拓扑(这个拓扑是指dentry inode和file)
2)动机是什么?sysfs就是给用户空间呈现一个完整的系统拓扑,至少debug有用。
3)我们应该做哪些?这里不要你管的太多,系统都给你封装好了。你只要调用相应的device add等方法,系统会自动连接到这里。
--------------华丽的分割线-----------------------
我看到了一副如此画面,设备在初始化过程中,会生成一个复杂的kset和kobject的表,这个表格同时又简单可视化为sysfs,当我们加入或者移出设备的时候,系统有条不紊的更新者两个结构。同时,如果访问设备,只需要在/dev下面建立设备的节点,就可以访问了。

你可能感兴趣的:(linux sysfs (5))