Linux内核统一设备系统操作

运维 系统运维
其与 Linux内核 统一设备模型的关系、常见属性文件的用法等方面对 sysfs 作入门介绍,并且就内核编程方面,以具体的例子来展示如何添加 sysfs 支持。

Linux内核是比较常用,我研究了一下Linux内核,Linux本身是这个操作系统的核心部分,和大家讨论讨论操作系统的内核。内核是完成那些最基本操作的程序,它负责其他程序(如文本编辑器程序)的启动与终止、内存申请处理硬盘访问、网络连接管理等方面的工作。sysfs 是 Linux内核中设计较新的一种虚拟的基于内存的文件系统,它的作用与 proc 有些类似,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux内核 统一设备模型作为管理之用。

相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好,它的设计从 proc 中吸取了很多教训。

本文就 sysfs 的挂载点 /sys 目录结构、其与 Linux内核 统一设备模型的关系、常见属性文件的用法等方面对 sysfs 作入门介绍,并且就内核编程方面,以具体的例子来展示如何添加 sysfs 支持。
sysfs 的历史,其与 proc 的关系?

sysfs 本身并不是一项很新的技术,但笔者发现,虽然 sysfs 从2003年诞生至今已有5年,但人们对 sysfs 依然缺乏了解;一个很重要的原因可能是缺乏文档, Linux内核方面最重要的理论书籍“Linux 设备驱动第3版”和“理解 Linux内核第2版”都诞生于2003年前后,并且从那以后尚未有再版过,其它一些重要文章则多对 sysfs 与 proc 相提并论且举例常常只有 proc,这导致了 sysfs 的很多重要概念至今仍鲜为人知,因此有必要对 sysfs 作更多介绍,这是写作本文的初衷。
 
sysfs 与 /sys

sysfs 文件系统总是被挂载在 /sys 挂载点上。虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6内核修正了这一规则,要求 sysfs 总是挂载在 /sys 目录上;针对以前的 sysfs 挂载位置不固定或没有标准被挂载,有些程序从 /proc/mounts 中解析出 sysfs 是否被挂载以及具体的挂载点,这个步骤现在已经不需要了。请参考附录给出的 sysfs-rules.txt 文件链接。

sysfs 与 proc

sysfs 与 proc 相比有很多优点,最重要的莫过于设计上的清晰。一个 proc 虚拟文件可能有内部格式,如 /proc/scsi/scsi ,它是可读可写的,(其文件权限被错误地标记为了 0444 !,这是内核的一个BUG),并且读写格式不一样,代表不同的操作,应用程序中读到了这个文件的内容一般还需要进行字符串解析,Linux内核而在写入时需要先用字符串格式化按指定的格式写入字符串进行操作;相比而言, sysfs 的设计原则是一个属性文件只做一件事情, sysfs 属性文件一般只有一个值,直接读取或写入。整个 /proc/scsi 目录在2.6内核中已被标记为过时(LEGACY),它的功能已经被相应的 /sys 属性文件所完全取代。新设计的内核机制应该尽量使用 sysfs 机制,而将 proc 保留给纯净的“进程Linux内核文件系统”。

【编辑推荐】

  1. 处理Linux内核安全详解
  2. 简单讲述Linux内核系统应用
  3. Linux内核:多核模式方法
  4. 分析linux内核的idle的知识
  5. linux内核对S3C2410睡眠模式的支持
责任编辑:佚名 来源: CSDN
相关推荐

2009-09-01 09:14:42

2009-12-22 12:54:10

Linux统一设备

2011-01-14 16:23:46

Linux内核

2009-12-17 18:19:12

Linux操作系统

2020-02-17 13:35:35

操作系统WindowsLinux

2011-01-04 18:15:21

2010-05-05 13:56:49

Menlo移动系统内核

2009-02-17 16:07:29

Linux操作系统内核启动参数

2021-04-12 12:00:13

Linux运维Linux系统

2023-05-15 08:58:41

块设备驱动Linux

2009-09-01 09:20:24

Linux操作系统声音设备编程实例

2019-06-14 08:24:16

块设备Linux操作系统

2009-06-19 20:32:00

Linux

2020-05-08 16:39:01

内存系统架构Linux

2013-07-04 18:26:46

2023-05-12 07:27:24

Linux内核网络设备驱动

2009-12-16 12:30:25

openSUSE操作系

2011-01-14 16:01:27

2011-01-14 16:51:44

Linux内核

2020-12-28 08:51:06

操作系统微内核Dubbo
点赞
收藏

51CTO技术栈公众号