您的位置:首页 > 运维架构 > Linux

android linux基础知识总结

2012-01-31 15:21 471 查看
1、虚拟内核文件系统(Virtual Kernel File Systems),是指那些是由内核产生但并不存在于硬盘上(存在于内存中)的文件系统,

2、虚拟文件系统,虽然它们出现在根文件系统中,但它里面的内容却无法在任何外部存储设备中找到,因为它们都在内存中。

3、proc是一个重要虚拟文件系统,通过它里面的一些文件,可以获取系统状态信息并修改某些系统的配置信息。

proc文件系统本身不占用磁盘空间,它仅存在于内存之中,为操作系统本身和应用程序之间的通信提供了一个安全的接口。

当我们在内核中添加了新功能或设备驱动时,经常需要得到一些系统状态的信息,一般这样的功能可能需要经过一些象ioctl()

这样的系统调用来完成。系统调用接口对于一些功能性的信息可能是适合的,因为应用程序必须将这些信息读出后再做一定的处理。

但对于一些实时性的系统信息,例如内存的使用状况,或者是驱动设备的统计资料等,我们更需要一个比较简单易用的接口来取得它们。

proc文件系统就是这样的一个接口,我们可以简单的用cat、strings程序来查看这些信息。例如,执行下面的命令:

cat /proc/filesystems //操作系统支持的文件系统类型

cat /proc/meminfo //内存的实时信息,内存大小等

cat /proc/partitions //存储器分区信息

cat /proc/cpuinfo //查看cpu信息

同样的,free、df、top、ps等程序的功能实现,强烈依赖于proc文件系统,为了使用那些程序,一定要使内核支持proc文件系统,

并将其挂接到根文件系统的/proc目录下。

4、sysfs文件系统与proc文件系统类似,也是一个不占有任何磁盘空间的虚拟文件系统。它通常被挂接在/sys目录下。

sysfs文件系统是Linux2.6内核引入的,它把连接在系统上的设备和总线组织成为一个分级的文件,使得它们可以在用户空间存取。

其实sysfs是从proc和devfs中划分出来的。

一、devfs

linux下有专门的文件系统用来对设备进行管理,devfs和sysfs就是其中两种。

在2.6内核以前一直使用的是devfs,devfs挂载于/dev目录下,提供了一种类似于文件的方法来管理位于/dev目录下的所有设备,

我们知道/dev目录下的每一个文件都对应的是一个设备,至于当前该设备存在与否先且不论,而且这些特殊文件是位于根文件系

统上的,在制作文件系统的时候我们就已经建立了这些设备文件,因此通过操作这些特殊文件,可以实现与内核进行交互。

但是devfs文件系统有一些缺点,例如:不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda

有可能对应sdb;没有足够的主/辅设备号,当设备过多的时候,显然这会成为一个问题;/dev目录下文件太多而且不能表示

当前系统上的实际设备;命名不够灵活,不能任意指定等等。

二、sysfs

正因为上述这些问题的存在,在linux2.6内核以后,引入了一个新的文件系统sysfs,它挂载于/sys目录下,跟devfs一样它也是一个

虚拟文件系统,也是用来对系统的设备进行管理的,它把实际连接到系统上的设备和总线组织成一个分级的文件,用户空间的程序同

样可以利用这些信息以实现和内核的交互,该文件系统是当前系统上实际设备树的一个直观反应,它是通过kobject子系统来建立这个

信息的,当一个kobject被创建的时候,对应的文件和目录也就被创建了,位于/sys下的相关目录下,既然每个设备在sysfs中都有唯

一对应的目录,那么也就可以被用户空间读写了。用户空间的工具udev 就是利用了sysfs提供的信息来实现所有devfs的功能的,

但不同的是udev运行在用户空间中,而devfs却运行在内核空间,而且udev不存在 devfs那些先天的缺陷。很显然,sysfs将是未来

发展的方向。

5、
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: