Lession 9 Linux内核文件系统:proc、tmpfs、devfs、sysfs


Lession 9 Linux内核文件系统:proc、tmpfs、devfs、sysfs

在类Unix系统中一切都是文件,那么Linux是如何将系统的运行信息、设备信息等抽象成文件进行管理的?

Linux内核实现了一套特殊的内存虚拟文件系统用于使用与文件接口统一的操作来完成系统信息管理,它们包括:
procfs、devfs、sysfs。

一、procfs
procfs是Linux内核信息的抽象文件接口,大量内核中的信息以及可调参数都被作为常规文件映射到
一个目录树中/proc.这样我们就可以简单直接的通过echo或cat这样的文件操作命令对系统信息进行查取
和调整了。大量的系统工具也通过procfs获取内核参数,例如ps、lspci等。

1. procfs的挂载:首先确定你的内核已经支持procfs,默认支持
	# mount -t proc none /proc
	使用/etc/fstab条目:none /proc proc defaults 0 0
	
2. procfs的内容:
	进程信息
	系统信息
	
3. procfs信息查看
	cat命令: cat /proc/cmdline
	
4. procfs参数调整
	echo命令

二、tmpfs
tmpfs是一种虚拟内存文件系统,使用内存作为存储分区进行文件的临时性存取,掉电会丢失,创建时不需要使用mkfs等进行格式化。

1. tmpfs的挂载:首先确定你的内核已经支持tmpfs
	# mount -t tmpfs -o size=10M tmpfs /tmp
	# df -h
	使用/etc/fstab条目:tmpfs /tmp tmpfs defaults 0 0
	
2. tmpfs的使用:用来存放应用临时生成的信息,不需要持久保存
	正常使用挂载目录:创建文件,存储信息,删除文件等
	记住:目录下的所有信息将在系统掉电后全部丢失
	
3. tmpfs的作用
	提高存储效率,内存的访问速度比Flash快很多
	避免对Flash存储设备的频繁读写,提高使用寿命

三、devfs
Linux2.6内核以前设备文件的抽象机制:提供了一种类似于文件的方法来管理位于/dev目录下的所有设备。

1. /dev ————— 根文件系统目录
	设备文件创建
		制作根文件系统时创建基本的,比如console,tty1等
		设备驱动加载时创建相应的设备文件
		
2. 特殊设备文件
	/dev/console
	/dev/null /dev/zero
	
3. devfs的缺点 ————> sysfs的设计
	不确定的设备映射,有时一个设备映射的设备文件可能不同,例如我的U盘可能对应sda有可能对应sdb
	没有足够的主/辅设备号,当设备过多的时候,显然这会成为一个问题

四、sysfs
Linux2.6内核以后引入sysfs:挂载于/sys目录下,把实际连接到系统上的设备和总线组织成一个分级的文件,用户空间的程序同样可以利用这些信息以实现和内核的交互,该文件系统是当前系统上实际设备树的一个直观反应。

1. sysfs的原理
	kobject子系统:建立目录树
		当一个kobject被创建的时候,/sys/目录下对应的文件和目录也就被创建
		每个设备在sysfs中都有唯一对应的目录,可以被用户空间读写
	
2. sysfs的挂载:首先确定你的内核已经支持sysfs,默认支持
	# mount -t none sysfs /sys
	使用/etc/fstab条目:none /sys sysfs defaults 0 0

3. sysfs的使用
	cat命令: 查看/sys目录下的设备信息
	
4. sysfs的应用
	用户空间的工具udev:利用了sysfs提供的信息来实现所有devfs的功能
		udev运行在用户空间中,而devfs却运行在内核空间

总结:
一切皆文件的抽象思想,使得Linux系统的管理变得简单统一,好的哲学产生好的设计。

猜你喜欢

转载自blog.csdn.net/qq_40083589/article/details/82946079