procfs和sysfs之间有什么区别?为什么它们是作为文件系统制作的?据我所知,proc只是用来存储系统中运行的进程的即时信息。
发布于 2010-12-16 07:32:06
procfs和sysfs之间有什么区别?
proc是旧的,它或多或少没有规则和结构。在某种程度上,人们认为proc有点混乱,需要一种新的方式。
然后创建了sysfs,添加的新内容像设备信息一样被放入sysfs中。
所以从某种意义上说,他们也是这样做的,但是sysfs的结构有点结构化。
为什么它们是作为文件系统制作的?
UNIX哲学告诉我们,一切都是一个“文件”,因此它是创建的,因此它作为文件运行。
据我所知,proc只是用来存储系统中运行的进程的即时信息。
这些部分一直存在,它们很可能永远不会进入sysfs。
但是您可以在proc中找到更多的旧东西,这些东西还没有被移动。
发布于 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公开它们的信息和控制点。
发布于 2017-07-28 07:30:45
file_operations,sysfs是更受限制的。
file_operations结构,该结构包含函数指针,这些指针决定每个基于文件的系统调用(例如open、read、mmap等)发生了什么,您可以从这些调用中采取任意操作。最小示例:show和store,它们用于为您实现open、close、read、write和lseek。另见:如何在平台驱动程序中将文件操作附加到sysfs属性?kobject紧密耦合https://unix.stackexchange.com/questions/4884
复制相似问题