it-swarm.cn

procfs和sysfs有什么区别?

Procfs和sysfs有什么区别?为什么将它们制成文件系统?据我了解,proc只是存储有关系统中正在运行的进程的即时信息的东西。

74
Sen

Procfs和sysfs有什么区别?

proc是旧的,几乎没有规则和结构。并在某个时候确定proc有点混乱,需要一种新的方法。

然后创建sysfs,并将添加的新内容放入sysfs之类的设备信息。

因此,从某种意义上说,它们执行相同的操作,但是sysfs有点结构化。

为什么将它们制成文件系统?

UNIX哲学告诉我们,一切都是“文件”,因此创建它的目的是使其表现为文件。

据我了解,proc只是存储有关系统中正在运行的进程的即时信息的东西。

这些部分一直在那里,它们可能永远不会移到sysfs

但是,您可以在proc中找到更多旧内容,这些旧内容尚未移动。

63
Johan

在开始时(在Unix中),程序发现系统上正在运行的进程的方式是直接从内核内存中读取进程结构(打开/ dev/mem,并直接解释原始数据)。这就是最初的“ ps”命令的工作方式。随着时间的流逝,一些信息可以通过系统调用获得。

但是,通过/ dev/mem将系统数据直接暴露给用户空间是一种不好的形式,并且每次您要导出一些新的过程数据时都不断地创建新的系统调用是令人讨厌的,因此创建了一种新的方法访问用户空间应用程序的结构化数据以查找有关流程属性的信息。这是/ proc文件系统。使用/ proc,即使内核中的基础数据结构发生了变化,接口和结构(目录和文件)也可以保持不变。与以前的系统相比,它不那么脆弱,而且扩展性更好。

/ proc文件系统最初旨在发布过程信息和一些关键系统属性,这些属性是“ ps”,“ top”,“ free”和其他一些系统实用程序所必需的。但是,由于它易于使用(从内核端和用户空间端),因此成为整个系统信息范围的垃圾场。而且,它开始获取读/写文件,用于调整设置并控制内核或其各个子系统的操作。但是,实现控制接口的方法是临时的,并且/ proc很快陷入混乱。

Sysfs(或/ sys文件系统)旨在为这种混乱增加结构,并提供一种统一的方式来从内核向用户空间公开系统信息和控制点(可设置的系统和驱动程序属性)。现在,内核中的驱动程序框架会在注册驱动程序时根据驱动程序类型及其数据结构中的值自动在/ sys下创建目录。这意味着特定类型的驱动程序都将具有通过sysfs公开的相同元素。

/ proc中仍然可以访问许多旧版系统信息和控制点,但是所有新的总线和驱动程序都应通过sysfs公开其信息和控制点。

77
Tim Bird

procfs允许任意_file_operations_,sysfs受限制

sysfs是在2.6内核发行周期中创建的虚拟文件系统,用于显示设备信息,因为procfs不能很好地处理此类信息。

内存等尚未移植到sysfs,因为它从未打算显示该类型的信息,因此根本不可能移植它。

3
kemra102

我也想在此处添加.../proc是较旧的版本,它包含该时间段的内核设备信息。由于sysfs带有2.6内核版本,因此设备驱动程序信息将通过该目录创建自己的目录。有点结构化,易于访问。

1
gagan bajaj