您的位置:首页 > 其它

虚拟文件系统

2012-08-15 12:20 239 查看
最近在读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 ...

这些都是文件系统,实现机制都类似。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: