关于虚拟文件系统

         最近在读linux源代码(slab部分),有一个工具slabinfo可以查看slab的相关信息,其实slabinfo就是读取sys/kernel/slab下面的文件。现在有一问题,sysfs是用来允许用户态进程读取内核数据的,但是我想知道只是如何实现的,具体说,就是想知道以下方面的问题:
1.假设内核中每一部分如slab允许用户态程序访问其中数据,那么slab程序和sysfs是如何建立关系的呢?是slab调用sysfs的借口将数据写入(在数据需要更新时)?还是将sysfs中的某个属性文件和内核中某一数据建立某种关联,当读取属性文件的时侯再读取内核数据?请给出确定答案和分析。

2.我在读取slab源码的时候没有发现和sysfs建立关联的蛛丝马迹,不知是错过了还是不需要在slab源码中和sysfs建立关联,而在引用slab接口的模块中使用sysfs?


        我用的内核版本是2.6.18。
通过cat /proc/slabinfo可以看到已经注册到内核的slab信息。

       下面简单介绍一下/proc/slabinfo的实现:
在proc_root_init函数里注册了PROC文件系统proc_fs_type,并进行了mount。
在proc_misc_init函数里,在PROC文件系统中添加了slabinfo文件,此文件的操作函数集为proc_slabinfo_operations。
具体的slab信息是proc_slabinfo_operations操作集访问cache_chain链来实现的。
这里更多的是文件系统的内容,而不是内存管理的内容。
另,如果我们的内核版本不一样,其实现也可能会有差别。


引用 1 楼 的回复:

我用的内核版本是2.6.18。
通过cat /proc/slabinfo可以看到已经注册到内核的slab信息。

下面简单介绍一下/proc/slabinfo的实现:
在proc_root_init函数里注册了PROC文件系统proc_fs_type,并进行了mount。
在proc_misc_init函数里,在PROC文件系统中添加了slabinfo文件,此文件的操作函数集为proc……

sysfs是不是也是类似的实现方式啊?我之后会去学习文件系统的相关知识,但是现在想得到一个确定的答案


rootfs, sysfs, procfs, pipefs, ext2fs, ext3fs ... 
这些都是文件系统,实现机制都类似。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值