其他文件系统
ramfs内存文件系统
ramfs是一个利用VFS自身结构而形成的内存文件系统。ranfs没有自己的文件存储结构,它的文件存储于page cache中,目录结构由dentry链表本身描述,文件则由VFS的inode结构本身描述。
/proc文件系统
/proc文件系统是个虚拟文件系统,它通过文件系统接口实现对内核的访问,输出系统运行状态。它以文件系统的形式,为操作系统本身和应用进程之间的通信提供了一个界面,使应用程序能够安全、方便地获得系统当前的运行状况和内核的内部数据信息,并且可以修改某些系统的配置信息。比如,能通过拥有模块列表的/proc/modules,拥有内存使用统计信息的/proc/meminfo来得到模块信息和内存信息。
数据结构 proc_dir_entry
在/proc文件系统中,代表各个文件节点的结构是proc_dir_entry()结构。和文件系统中的dir_entry()相似,它管理着从操作系统的用户控件到核心空间对文件读写的驱动。但是,与一般的文件系统不同的是,它修改的并不是实实在在的硬盘上的文件,而是在系统启动之后内存中由内核动态创建的文件。因此在系统关闭之后,/proc文件系统中的文件就不存在了。
系统启动后,创建了proc_dir_entry{}结构形成的文件系统树,每当从用户空间读取/proc目录下面的文件的时候,内核根据读取的文件映射到对应的驱动函数,动态地获取内核数据。除了提供读的动能,/proc文件系统的部分文件还提供写的功能。主要是针对/proc/sys目录而做的。对/proc文件系统的写操作并不意味着需要写硬盘灯硬盘设备,而是动态更改内核中的数据,达到完成监视内核运行状态的目的,也就是部分地实现调试的功能。
/proc文件系统的超级块和普通文件系统的超级块不同,它并不需要从硬件设备中获取超级块的数据,而是在内核启动的时候直接初始化超级块数据,从而完成系统中对/proc文件系统操作函数的初始化过程,以及这种文件系统的统计过程。
/proc文件系统在调试中的作用
使用/proc文件系统获得操作系统运行态的信息,对于进程和内核的调试都有很多好处。下面是使用/proc文件系统的优点:
- 可以直接使用/proc文件系统小的文件,开发一些专用程序获取内核数据,如ps就通过从/proc文件系统获得数据的方式工作的
- 不需要将进程从用户态转换到内核态,就能得到对内核运行空间的数据,安全而且方便。
- /proc文件系统可直接更改一些允许改变的内核参数数据(/proc/sys),从而可以在不重新编译内核的情况下优化系统配置
1)/proc根下的文件和目录
/proc/sys目录是一个特殊的目录,它支持直接使用文件系统的写操作,完成对内核中预定的一些变量的改变,从而达到更改系统特性的目的。
Devfs文件系统
设备文件系统(devfs)是一个不存在于磁盘中的文件系统,它像/proc文件系统一样存在于内存之中,在实现效果上,设备文件系统与传统的主、次设备号管理是一样的。
使用传统的主、次设备号管理设备存在较多的缺陷,例如,主次设备号的数目有限制,不存在的设备也创建一个设备节点,造成磁盘空间浪费,太多的节点,造成查找困难。使用devfs文件系统管理设备的文件,使得设备管理变成一个独立的文件系统,可以随处挂接,同时挂接目录上仅有当前机器上存在的几个设备节点。另外,不存在设备号资源有限的问题。
sysfs文件系统
sysfs是基于ramfs文件系统的存在于内存中的文件系统,它提供了在内核和用和空间之间输出内核数据结构、属性和连接的界面。sysfs与kobject内核对象结构绑在一起的。sysfs文件系统总是编译进内核的,你可以挂接上sysfs后访问它,用下面这个命令挂接:mount -t sysfs sysfs /sys