首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >procfs和sysfs之间有什么区别?

procfs和sysfs之间有什么区别?
EN

Unix & Linux用户
提问于 2010-12-16 05:26:03
回答 4查看 50.2K关注 0票数 84

procfs和sysfs之间有什么区别?为什么它们是作为文件系统制作的?据我所知,proc只是用来存储系统中运行的进程的即时信息。

EN

回答 4

Unix & Linux用户

回答已采纳

发布于 2010-12-16 07:32:06

procfs和sysfs之间有什么区别?

proc是旧的,它或多或少没有规则和结构。在某种程度上,人们认为proc有点混乱,需要一种新的方式。

然后创建了sysfs,添加的新内容像设备信息一样被放入sysfs中。

所以从某种意义上说,他们也是这样做的,但是sysfs的结构有点结构化。

为什么它们是作为文件系统制作的?

UNIX哲学告诉我们,一切都是一个“文件”,因此它是创建的,因此它作为文件运行。

据我所知,proc只是用来存储系统中运行的进程的即时信息。

这些部分一直存在,它们很可能永远不会进入sysfs

但是您可以在proc中找到更多的旧东西,这些东西还没有被移动。

票数 69
EN

Unix & Linux用户

发布于 2013-08-13 19:26:58

在一开始(在Unix中),程序了解系统上正在运行的进程的方式是直接从内核内存读取进程结构( on /dev/mem,并直接解释原始数据)。这就是第一个'ps‘命令的工作方式。随着时间的推移,一些信息是通过系统调用提供的。

然而,通过/dev/mem直接将系统数据公开给用户空间是不好的形式,而且每当您想要导出一些新的进程数据时,不断地创建新的系统调用是令人讨厌的,因此创建了一个新的方法来访问用户空间应用程序的结构化数据,以了解进程属性。这是/proc文件系统。使用/proc,即使内核中的底层数据结构发生了变化,接口和结构(目录和文件)也可以保持不变。这比早期的体系要脆弱得多,而且规模也更大。

/proc文件系统最初是为了发布进程信息和一些关键的系统属性而设计的,这些属性是'ps‘、'top’、'free‘和其他一些系统实用程序所需要的。但是,由于它很容易使用(无论是从内核端还是从用户空间端),它就成了整个系统信息的弃置地。此外,它还开始获取读/写文件,用于调整设置和控制内核或其各个子系统的操作。然而,实现控制接口的方法是临时的,/proc很快就变得混乱不堪。

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

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

票数 96
EN

Unix & Linux用户

发布于 2017-07-28 07:30:45

procfs允许任意file_operations,sysfs是更受限制的

最小示例:如何在Linux内核中创建一个简单的sysfs类属性

票数 13
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/4884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档