首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >sysfs和devtmpfs

sysfs和devtmpfs
EN

Unix & Linux用户
提问于 2015-10-16 00:49:51
回答 2查看 6.2K关注 0票数 4

乌尔里希·丹格尔解释说非常好地理解了devtmpfs和udev之间的区别。

那sysfs呢?

我理解内核使用sysfs将设备节点导出到udev要使用的用户空间。那么devtmpfs和sysfs是一样的吗?如果是,他们为什么要用不同的名字?如果不是,sysfs和devtmpfs之间的真正区别是什么?

EN

回答 2

Unix & Linux用户

发布于 2015-10-17 23:56:01

内核使用sysfs将设备节点导出到udev要使用的用户空间。

不是的。Sysfs不包含设备节点。Sysfs主要包含提供有关设备的信息的文件,以及允许进程控制设备工作方式的一些文件。但是在大多数情况下,设备不能通过sysfs所提供的来使用。

例如,让我们拿一个硬盘为例。在/sys/devices下面有一个目录,它的路径取决于它如何连接到计算机(例如,连接到连接到计算机主PCI总线的控制器的磁盘的/sys/devices/pci0000:00/… )。在该目录中,您可以找到各种信息,如大小、是否可移动、电源状态等。还有分区的子目录。但是里面没有任何东西提供对磁盘内容的访问。在/sys的其他地方,有指向与该磁盘对应的目录的符号链接:在/sys/block中,在/sys/class/block等中,但是仍然没有访问磁盘内容的任何链接。

/dev中,磁盘条目是一个特殊的文件- a 块装置。此文件允许进程读取和写入磁盘的内容。(虽然对于通常不会发生的磁盘,分区的磁盘- or的内容是挂载的,所以内核正在访问设备,而进程没有。)

设备文件允许通过伊奥克特进行读写内容以外的一些操作。可以通过设备文件上的ioctl提供sysfs提供的所有信息和控制接口。然而,由于以下几个原因,这样做不太方便:

  • /sys中使用单独的文件,可以在细粒度的基础上设置权限.在/dev中,每个设备都有一个文件,它要么全部要么什么都不是。
  • 应用程序可以轻松地读取和写入单独的文件。您可以只使用catecho。使用ioctl,这要困难得多:在其他高级语言中没有shell接口,通常也没有接口。
  • 使用ioctl,命令必须用数字而不是名称编码,参数的格式必须在二进制级别上定义。使用名称和简单的文本格式可以更容易地编写软件。

另一方面,可以通过sysfs中的文件提供对设备内容的访问。但是这需要在内核中进行额外的工作: sysfs主要用于提供小文件和符号链接,并且没有现有应用程序所期望的ioctl支持。我不认为扩展sysfs以支持现有设备类型会有很大的好处,因此设备文件的继续存在。

Sysfs由内核自动填充,实时反映实际可用的设备。sysfs中文件的含义来自它的路径,该路径由提供该文件的驱动程序选择。/dev的工作方式不同:文件的含义来自设备文件的类型(块或字符)及其主要和次要数字(这是ls -l列出的,而不是设备的文件大小)。传统上,/dev是静态的,设备文件是在系统安装期间创建的;但是当设备可以热插拔时,这就不能很好地工作了,因此需要一个实时反映连接设备的动态/dev

Linux经历了几次动态/dev的迭代。Linux2.4有神甫,内核会自动创建条目来反映连接的设备。但这就是不太好,因为它将硬编码的设备命名和权限策略放入内核,因此它被用户程序udev替换为管理策略,在简单的tmpfs文件系统(对内核没有特殊意义的内存中的文件系统)上替换为/dev。然后devfs部分返回,使用devtmpfs,这是tmpfs的一个实例,可用设备的条目是由内核自动创建的,但是udev在此基础上执行它想要的所有管理。

票数 9
EN

Unix & Linux用户

发布于 2015-10-17 15:01:18

来自内核文档文件sysfs.txt

sysfs是一个最初基于ramfs的基于ram的文件系统。它提供了一种导出内核数据结构、它们的属性以及它们之间的连接到用户空间的方法。

提交消息到内核源代码:

Devtmpfs允许内核在内核初始化时,在注册任何驱动核心设备之前,很早就创建一个名为devtmpfs的tmpfs实例。每个主要/次要设备都将在devtmpfs中提供一个设备节点。

基本上,sysfs是在/sys上挂载的,包含有关设备和设备名称的信息和统计信息。

devtmpfs安装在/dev上,并包含所有设备的特殊设备文件。

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

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

复制
相关文章

相似问题

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