Linux的dev/ 和 sys/ 和 proc/ 目录

linux精神:
一切设备皆文件。
设备被抽象成文件

1、 /dev :

该目录放的设备文件,是应用程序和内核的交互文件,应用程序对这些文件的读写控制可以直接访问到实际的设备
应用程序通过mknod创建的文件,如果底层驱动对mknod的设备号有对应的驱动,那么应用程序读写节点时就会调用到底层驱动
一些较复杂的设备通常使用设备节点dev的方式

2、 /sys :

是个文件系统,sysfs的挂载点,sysfs是一个虚拟文件系统(还有其他的vfs,如usbfs、procfs),内核设备驱动中有调用kobj_add函数的,就会在sys下对应目录创建相应的文件
它作用是将内核注册的device、device_driver、bus通过链表组成一个树形结构,表示内核有哪些驱动和设备,以及所属总线,便于管理,应用层也可以通过读写sys下的文件的内核交互(ktype)
一般简单点的设备会用sysfs方式操控

3、 /sys/devices :

实际存放device和driver的,按照设备挂接的总线类型,组织成层次结构,保存了系统所有的设备
devices中所有设备都是连接于某种总线之下,每一种总线之下可以找到具体设备的符号链接

4、/sys/dev :

下面有两个子目录,block和char,存放的是块设备和字符设备的主次号,格式为: major:minor,但都是链接,指向sys/devices目录下的实际设备

5、ATTR 和 file_operation:

使用DEVICE_ATTR,可以实现驱动在sys目录自动创建文件,我们只需要实现show和store函数即可
应用层可以通过cat和echo命令来对sys创建出来的文件进行读写设备属性文件,实现交互
file_operation是字符设备驱动实现的零一用方式: 用户进程,在对设备文件进行read、write等操作时,系统调用通过设备文件的主设备号找到相应的设备驱动程序,然后读取这个数据结构相应的函数指针,接着把控制权交给该函数,这是linux的设备驱动程序工作的基本原理

6、sysfs和 /dev 的关系:

sysfs最主要用来描绘kernel2.6中的设备驱动模型,用户态的后台程序(mdev、udev)会动态周期性的扫描 /sys 目录中的属性项来自动管理设备文件(设备节点),从而在 /dev 目录会建立或者删除对应的设备文件

7、总结:

/dev 目录存放的是应用与内核交互的设备文件,而/sys/dev目录存放的是系统的所有设备,这些设备由文件系统管理
应用层操控底层两种方式:
1、/dev 目录下的设备文件(设备节点) :复杂点的设备, LCD,摄像头等
2、/sys 目录下设备的属性文件 :简单点的设备, led、gpio等

8、/proc :

正在运行的内核信息映射,主要输出信息为:进程信息,内存资源信息,磁盘分区信息等

/proc下文件基本都是只读的,除了/proc/sys目录,它是可写的(查看和修改内核的运行参数)
/proc下数字命令的目录就是对于PID的进程目录
/proc/cmdline 启动时传递给kernel的参数信息(就是bootargs信息)
/proc/cpuinfo cpu的信息
/proc/crypto 内核使用的所有已安装的加密密码及细节
/proc/devices 已经加载的设备并分类
/proc/dma 已注册使用的ISA DMA频道列表
/proc/execdomains Linux 内核当前支持的execution domains
/proc/fb 帧缓冲设备列表,包括数量和控制它的驱动
/proc/filesystems 内核当前支持的文件系统类型
/proc/interrupts x86架构中的每个IRQ中断数
/proc/iomem 每个物理设备当前在系统内存中的映射
/proc/ioports 一个设备的输入输出所使用的注册端口范围
/proc/kcore 代表系统的物理内存,存储为核心文件格式,里边显示的是字节数,等于RAM大小加上4kb
/proc/kmsg 记录内核生成的信息,可以通过/sbin/klogd或/bin/dmesg来处理
/proc/loadavg 根据过去一段时间内CPU和IO的状态得出的负载状态,与uptime命令有关
/proc/locks 内核锁住的文件列表
/proc/mdstat 多硬盘,RAID配置信息(md=multiple disks)
/proc/meminfo RAM使用的相关信息
/proc/misc 其他的主要设备(设备号为10)上注册的驱动
/proc/modules 所有加载到内核的模块列表
/proc/mounts 系统中使用的所有挂载
/proc/partitions 分区中的块分配信息
/proc/pci 系统中的PCI设备列表
/proc/slabinfo 系统中所有活动的 slab 缓存信息
/proc/stat 所有的CPU活动信息
/proc/uptime 系统已经运行了多久
/proc/swaps 交换空间的使用情况
/proc/version Linux内核版本和gcc版本
/proc/bus 系统总线(Bus)信息,例如pci/usb等
/proc/driver 驱动信息
/proc/fs 文件系统信息
/proc/ide ide设备信息
/proc/irq 中断请求设备信息
/proc/net 网卡设备信息
/proc/scsi scsi设备信息
/proc/tty tty设备信息
/proc/net/dev 显示网络适配器及统计信息
/proc/vmstat 虚拟内存统计信息
/proc/vmcore 内核panic时的内存映像
/proc/diskstats 取得磁盘信息
/proc/schedstat kernel调度器的统计信息
/proc/zoneinfo 显示内存空间的统计信息,对分析虚拟内存行为很有用

以下是/proc目录中进程N的信息
/proc/N/cmdline 进程启动命令
/proc/N/cwd 链接到进程当前工作目录
/proc/N/environ 进程环境变量列表
/proc/N/exe 链接到进程的执行命令文件
/proc/N/fd 包含进程相关的所有的文件描述符 (ls /proc//fd | wc -l 查看某个进程打开多少FD)
/proc/N/maps 与进程相关的内存映射信息
/proc/N/mem 指代进程持有的内存,不可读
/proc/N/root 链接到进程的根目录
/proc/N/stat 进程的状态
/proc/N/statm 进程使用的内存的状态
/proc/N/status 进程状态信息,比stat/statm更具可读性
/proc/self 链接到当前正在运行的进程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/30713.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

更换域名流程记录

华为云的服务器,阿里云购买的域名。 1.购买域名 2.在域名服务商绑定服务器ip(以阿里云为例) 控制台->域名控制台->域名列表->点击域名->域名解析->添加记录 记录类型填A , 主机记录“”或“www”,记录值填服务器i…

通俗易懂的ChatGPT原理简介

一、引言 随着人工智能的发展,聊天机器人已经成为我们生活中的常见工具。而在众多聊天机器人中,ChatGPT 无疑是最受关注的一个。ChatGPT 是由 OpenAI 开发的一种基于生成式预训练模型(GPT)的大型语言模型。本文将通俗易懂地介绍 …

最新暑假带刷规划:50天吃透660+880!

现在只刷一本题集根本不够 去做做24年的考研真题卷就什么都明白了,24年的卷子就是典型的知识点多,杂,计算量大。 而现在市面上的任何一本题集,都无法做到包含所有的知识点,毕竟版面有限! 所以&#xff0…

淘宝商品搜索新纪元:item_search接口技术揭秘与实战应用

淘宝item_search接口技术详解与应用 一、引言 淘宝作为中国最大的电商平台之一,拥有海量的商品信息。为了帮助开发者更高效地获取淘宝平台上的商品数据,淘宝开放平台提供了item_search接口。通过该接口,开发者可以根据关键词、分类、价格等…

iptables(3)规则管理

简介 上一篇文章中,我们已经介绍了怎样使用iptables命令查看规则,那么这篇文章我们就来介绍一下,怎样管理规则,即对iptables进行”增、删、改”操作。 注意:在进行iptables实验时,请务必在个人的测试机上进行,不要再有任何业务的机器上进行测试。 在进行测试前,为保障…

【JavaEE精炼宝库】多线程(7)定时器

目录 一、定时器的概念 二、标准库中的定时器 三、自己实现一个定时器 3.1 MyTimerTask 实现: 3.2 MyTimer 实现: 一、定时器的概念 定时器也是软件开发中的⼀个重要组件。类似于一个 "闹钟"。达到一个设定的时间之后,就执行…

两个数组的交集--力扣349

两个数组的交集 题目思路C代码 题目 给定两个数组 nums1 和 nums2 ,返回它们的 交集 输出结果中的每个元素一定是唯一 的。我们可以不考虑输出结果的顺序 。 示例 1: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 示例 2&…

AI推介-大语言模型LLMs论文速览(arXiv方向):2024.06.05-2024.06.10

文章目录~ 1.Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation2.Reasoning in Token Economies: Budget-Aware Evaluation of LLM Reasoning Strategies3.Low-Rank Quantization-Aware Training for LLMs4.MASSW: A New Dataset and Ben…

聊一聊 Monitor.Wait 和 Pluse 的底层玩法

一:背景 1. 讲故事 在dump分析的过程中经常会看到很多线程卡在Monitor.Wait方法上,曾经也有不少人问我为什么用 !syncblk 看不到 Monitor.Wait 上的锁信息,刚好昨天有时间我就来研究一下。 二:Monitor.Wait 底层怎么玩的 1. 案…

Chromium 开发指南2024 Mac篇-Chromium项目编译小技巧(六)

1. 前言 在编译大型项目如 Chromium 时,优化编译速度是非常重要的。本文将介绍一些编译优化的小技巧,尤其是如何使用 ccache 来加速 C/C 代码的重新编译。ccache 是一个编译器缓存,通过缓存之前的编译并检测何时再次进行相同的编译&#xff…

“display interface“的43条信息,这条绝对被你忽略了

号主:老杨丨11年资深网络工程师,更多网工提升干货,请关注公众号:网络工程师俱乐部 大家好,我是张总。 上周和老杨唠嗑,他说我每次都是直播,或者视频号上给大家聊聊技术,都没发过技术…

站群服务器对于网站优化有哪些好处?

站群服务器主要是指IP数量比一般服务器多的机器,这种类型的服务器会应用在网站集群和数据库集群等场景当中,站群服务器能够通过批量操作快速部署多个网站,为企业节省了大量的时间和人力成本。 那站群服务器对于网站进行优化的好处有哪些呢&am…

后缀表达式多语言版(c++ java python等)

后缀表达式&#xff0c;也称为逆波兰表达式&#xff0c;是一种不需要括号的运算表达式。在后缀表达式中&#xff0c;所有的数字和运算符用两个空格隔开&#xff0c;所有的运算符都放在两个操作数的后面。 后缀表达式求值c代码 #include <iostream> #include <stack&…

U盘删除的文件怎么找回?数据恢复,5个方法

“我的u盘里有部分文件不小心被删除了&#xff0c;尝试了很多的方法都无法找回它们。U盘删除的文件怎么找回呢&#xff1f;希望大家给我出出主意&#xff01;” 保存了很多重要的文件在u盘中&#xff0c;查看u盘内存时却发现很多文件被删除了&#xff1f;别慌&#xff01;即使u…

系统架构设计师【论文-2020年 试题4】: 论企业集成架构设计及其应用(包括解题思路和经典范文)

文章目录 真题题目&#xff08;2020年 试题4&#xff09;写作要点经典范文 真题题目&#xff08;2020年 试题4&#xff09; 论企业集成架构设计及其应用 企业集成架构&#xff08;Enterprise Integration Architecture&#xff0c;ElA)是企业集成平台的核心&#xff0c;也是解…

B树(数据结构篇)

数据结构之B树 B-树(B-tree) 概念&#xff1a; B-树是一个非二叉树的多路平衡查找树(数据有序)&#xff0c;是一颗所有数据都存储在树叶节点上的树&#xff0c;不一定存储具体的数据&#xff0c;也可以是指向包含数据的记录的指针或地址 对于**阶为M(子节点数量在2和M之间)*…

Properties与xml知识点总结

文章目录 一、Properties1.1 构造方法1.2 从Properties文件中获取1.3 向Properties文件中存储 二、xml2.1 XML2.2 特点2.3 规则2.3 抬头声明2.4 特殊字符2.5 CDATA区段2.4 作用和应用场景 三、区别 一、Properties 定义&#xff1a;properties是一个双列集合集合&#xff0c;拥…

Python启多个线程,运行多个Python文件

哈喽,大家好,我是木头左! 在多任务处理的场景中,经常需要同时运行多个Python文件。为了提高程序的效率和性能,可以使用Python的多线程功能来并发执行这些文件。本文将介绍如何使用Python创建多个线程,并运行多个Python文件。 1. 导入所需库 需要导入一些必要的库来实现多…

android 在线程中更新界面

在Android中&#xff0c;你不能直接从子线程中更新UI&#xff0c;因为这会导致应用崩溃。你需要使用Handler或runOnUiThread()来更新UI。 使用Handler 以下是如何使用Handler在子线程中更新UI的示例&#xff1a; 1. 创建Handler实例&#xff1a; import android.os.Bundle;…

MicroBlaze IP核中的外设接口和缓冲器接口介绍

MicroBlaze IP核是Xilinx公司提供的一个嵌入式软核处理器&#xff0c;广泛应用于FPGA设计中。在MicroBlaze IP核中&#xff0c;外设接口和缓冲器接口是处理器与外部设备和内存交互的关键部分。 1 外设接口 MicroBlaze处理器中的AXI4 内存映射外设接口AXI4是一种在Xilinx FPGA设…