当前位置: 首页 > article >正文

Linux下的dev,sys和proc(TODO)

(TODO)

还有一个sysfs

在 Linux 系统中,/dev/sys/proc 是三个特殊的虚拟文件系统目录,它们各自有特定的用途,主要用于与设备和内核交互。以下是它们的详细区别和功能说明:


1. /dev(Device Filesystem)

功能
  • 包含所有设备文件,用于用户空间程序访问硬件设备。
  • 设备文件不是普通文件,而是指向实际硬件设备的接口。
设备类型
  • 字符设备(Character Device):按字节访问设备,例如键盘、串口。
    • 例如:/dev/tty(终端)、/dev/random(随机数生成器)
  • 块设备(Block Device):按块访问设备,例如硬盘、U盘。
    • 例如:/dev/sda(硬盘)、/dev/mmcblk0(SD卡)
实现机制
  • 通过 udev 动态管理设备节点。
  • 当硬件设备被插拔时,udev 自动创建或移除对应的设备文件。
示例
ls -l /dev
# 输出类似于:
crw------- 1 root root 4, 64 Jan 9 10:00 /dev/ttyS0
brw-rw---- 1 root disk 8, 0 Jan 9 10:00 /dev/sda
  • c/b 表示字符设备或块设备,8, 0 是主设备号和次设备号。

2. /proc(Process Filesystem)

功能
  • 提供一个与系统和进程相关的虚拟文件系统,主要用于显示内核信息和运行时状态。
  • 主要目的是允许用户空间访问内核数据结构,无需修改代码或重启系统。
特点
  • 不占用实际磁盘空间,所有文件都是虚拟文件。
  • 文件内容是动态生成的,反映当前内核和系统的状态。
常见文件和目录
  • 进程信息:每个运行中的进程在 /proc 中有一个以其进程号命名的目录。
    • 例如:/proc/1234/ 包含进程 1234 的状态、内存映射等信息。
  • 系统信息
    • /proc/cpuinfo:CPU 信息。
    • /proc/meminfo:内存使用情况。
    • /proc/modules:加载的内核模块。
    • /proc/devices:当前系统中注册的设备。
示例
cat /proc/cpuinfo
# 显示 CPU 详细信息

3. /sys(Sysfs Filesystem)

功能
  • 提供一个与设备、驱动程序和内核子系统交互的接口。
  • /proc 的补充,专注于设备驱动和内核的设备模型。
特点
  • 组织形式是层次化的,反映内核设备模型的结构。
  • 允许用户动态查看和修改设备参数。
常见用途
  • 查看和管理设备属性:
    • 设备属性通过文件暴露,例如 /sys/class/net/eth0/ 中的信息反映网络接口的状态。
  • 动态调整系统行为:
    • 修改 /sys 中的文件即可调整内核参数(需要权限)。
示例
ls /sys/class/net
# 显示系统中所有的网络接口
echo 1 > /sys/class/leds/led0/brightness
# 控制 LED 的亮度

对比总结

特性/dev/proc/sys
用途硬件设备的用户接口系统和进程信息的查看接口内核设备模型的交互接口
类型包含字符设备和块设备文件虚拟文件,反映系统和内核状态虚拟文件,反映设备模型
交互方式直接与硬件设备交互只读为主,部分文件可写可读写,允许动态配置设备参数
内容硬件设备节点内核数据结构和进程信息设备、驱动和内核子系统参数
是否动态动态创建/删除设备文件动态生成当前状态信息动态生成设备和驱动结构

总结

  • /dev:设备接口,直接与硬件交互。
  • /proc:提供系统和进程状态,主要用于监控和调试。
  • /sys:内核设备模型接口,允许动态管理和配置设备。

三者结合,为 Linux 系统提供了完整的硬件抽象层和内核交互方式。


http://www.kler.cn/a/508054.html

相关文章:

  • riscv架构下linux4.15实现early打印
  • web开发工具之:三、JWT的理论知识,java的支持,封装的工具类可以直接使用
  • LabVIEW实现油浸式变压器自主监测与实时报告
  • 基于机器学习的用户健康风险分类及预测分析
  • DNS介绍与部署-Day 01
  • 计算机网络 (42)远程终端协议TELNET
  • OpenCV阈值
  • 【C语言】_内存拷贝函数memcpy与memmove
  • Matplotlib基础
  • 【Elasticsearch】搜索类型介绍,以及使用SpringBoot实现,并展现给前端
  • 深度学习基础--GRU学习笔记(李沐《动手学习深度学习》)
  • 如何用ChatGPT玩转知识图谱?
  • NLP意图识别数据集处理流程
  • PyTorch 神经协同过滤 (NCF) 推荐系统教程
  • 【 MySQL 学习3】查询
  • 当当网书籍信息爬虫
  • 【教程】windows下使用docker部署hyperf框架
  • Java最常用的几种设计模式详解及适用业务场景
  • 论文阅读:Structure-Driven Representation Learning for Deep Clustering
  • Vue2+OpenLayers实现折线绘制功能(提供Gitee源码)
  • MySQL 的mysql_secure_installation安全脚本执行过程介绍
  • jenkins-Job构建
  • 55.【5】BUUCTF WEB NCTF2019 sqli
  • 前端框架: Vue3组件设计模式
  • 【经典神经网络架构解析篇】【6】MobileNet网络详解:模型结构解析、创新点、代码实现
  • 重拾Python学习,先从把python删除开始。。。