如何在linux内核中选择“sys”和“proc”文件

时间:2015-12-07 12:23:28

标签: c linux linux-kernel filesystems

据我所知,

在Linux文件系统中,为了用户空间和内核空间之间的信息交流,使用了两种虚拟文件系统。

1) Proc文件系统 http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

2) sysfs文件系统 https://en.wikipedia.org/wiki/Sysfs

在linux内核代码中,我看到一些子系统使用proc文件来执行这种用户空间 - 内核空间通信,有些系统使用了sysfs文件来解决同样问题。

所以我只是想知道,如果我要编写新的linux内核模块或驱动程序,那么如何选择虚拟文件?我应该何时使用sysfs以及何时使用proc文件?

如果我误解了这里的任何内容,请告诉我。

2 个答案:

答案 0 :(得分:2)

procfs 中添加/修改条目时,我唯一想到的就是当你使用虚拟内存子系统时。我正在谈论 / proc / sys / vm / 中的条目(因此,如果您出于某种原因修改回写 overcomit ,< em> swap 等)。 如果您正在编写与已通过 procfs 导出的内容无关的驱动程序或模块,则应使用 sysfs 。< / p>

答案 1 :(得分:0)

阅读之后,我有以下理解

1)Proc文件是较旧的方法。它在每次读取或写入调用时分配PAGE大小内存,并且这个系统完全是错误的(就像你正在读取/写入任何设备和设备的proc条目从系统中删除..没有在Proc系统中处理它... {read it来自LDD :)})。所以内核开发人员社区建议使用更先进和更复杂的SYS文件系统。