android linux基础知识总结

来源:互联网 发布:php源码加密软件 编辑:程序博客网 时间:2024/05/16 23:44

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、

原创粉丝点击