Sen*_*Sen 81 linux filesystems proc sysfs
procfs 和 sysfs 有什么区别?为什么它们被做成文件系统?据我了解, proc 只是存储有关系统中运行的进程的即时信息的东西。
Tim*_*ird 87
一开始(回到Unix),程序发现系统上正在运行的进程的方式是直接从内核内存中读取进程结构(打开/dev/mem,直接解释原始数据)。这就是第一个“ps”命令的工作方式。随着时间的推移,一些信息可以通过系统调用获得。
然而,通过 /dev/mem 将系统数据直接暴露给用户空间是不好的形式,并且每次想要导出一些新的进程数据时不断创建新的系统调用是令人讨厌的,因此创建了一个更新的方法访问用户空间应用程序的结构化数据以了解进程属性。这是 /proc 文件系统。使用 /proc,接口和结构(目录和文件)可以保持不变,即使内核中的底层数据结构发生变化。这比早期的系统脆弱得多,而且扩展性更好。
/proc 文件系统最初设计用于发布进程信息和一些关键系统属性,这是“ps”、“top”、“free”和一些其他系统实用程序所需的。然而,因为它易于使用(从内核端和用户空间端),它成为了整个系统信息的倾倒场。此外,它开始获取读/写文件,用于调整设置和控制内核或其各种子系统的操作。然而,实现控制接口的方法是临时的,/proc 很快就变得一团糟。
sysfs(或 /sys 文件系统)旨在为这种混乱添加结构,并提供一种统一的方式来从内核向用户空间公开系统信息和控制点(可设置的系统和驱动程序属性)。现在,在注册驱动程序时,内核中的驱动程序框架会根据驱动程序类型及其数据结构中的值自动在 /sys 下创建目录。这意味着特定类型的驱动程序都将具有通过 sysfs 公开的相同元素。
许多遗留系统信息和控制点仍然可以在 /proc 中访问,但所有新的总线和驱动程序都应该通过 sysfs 公开它们的信息和控制点。
Joh*_*han 67
procfs 和 sysfs 有什么区别?
proc是旧的,它或多或少没有规则和结构。并且在某些时候决定这proc有点太混乱了,需要一种新的方式。
然后sysfs被创建,添加的新东西被放入sysfs像设备信息中。
所以从某种意义上说,他们做同样的事情,但sysfs更有条理。
为什么它们被做成文件系统?
UNIX 哲学告诉我们,一切都是一个“文件”,因此它被创建,因此它的行为就像文件一样。
据我了解, proc 只是存储有关系统中运行的进程的即时信息的东西。
这些部分一直在那里,他们可能永远不会进入sysfs。
但是您可以在 中找到更多proc未移动的旧东西。
Cir*_*郝海东 13
procfs 允许任意file_operations,sysfs 更受限制
PROCFS条目收到一个file_operations结构,它包含函数指针,决定什么发生在每一个基于文件的系统调用,例如open,read,mmap等,你可以从那些随意行动。
最小的例子:
sysfs 在以下方面受到更多限制:
show和store,其中Linux使用来实现open,close,read,write和lseek为您服务。另请参阅:如何将文件操作附加到平台驱动程序中的 sysfs 属性?| 堆栈溢出kobject| 归档时间: |
|
| 查看次数: |
45226 次 |
| 最近记录: |