(1)/proc文件系统的特点和/proc文件的说明

/proc文件系统是一种特殊的、由软件创建的文件系统,内核使用它向外界导出信息,/proc系统只存在内存当中,而不占用外存空间。

/proc下面的每个文件都绑定于一个内核函数,用户读取文件时,该函数动态地生成文件的内容。也可以通过写/proc文件修改内核参数

(2)/proc目录下的文件分析

/proc/$pid

关于进程$pid的信息目录。每个进程在/proc 下有一个名为其进程号的目录。例:

$>strings -f /proc/[0-9]*/cmdline

/proc/cmdline

内核启动的命令行

/proc/cpuinfo

处理器信息,如类型、制造商、型号和性能。

/proc/devices

列出字符和块设备的主设备号,以及分配到这些设备号的设备名称

/proc/dma

显示当前使用的DMA通道。

/proc/filesystems

列出了可供使用的文件系统类型,通常是编入内核的文件系统类型,但可以通过模块加入新的类型

/proc/interrupts

显示使用的中断号,中断名称,以及这些中断从系统启动后产生的次数

/proc/ioports

当前使用的I/O端口。

/proc/kallsyms

内核符号表。安装新的模块后,会在这里体现出来

/proc/kcore

系统物理内存映象。与物理内存大小完全一样,但不实际占用这么多内存;(记住:除非拷贝到文件中,/proc下没有任何东西占用任何磁盘空间)

/proc/kmsg

内核输出的消息。也被送到syslog。

/proc/loadavg

系统的平均负载,前3个是过去1分钟,5分钟,15分钟的负载,然后是正在运行的任务数和总任务数,最后是上次运行的进程号

/proc/meminfo

存储器使用信息,包括物理内存和swap。

/proc/modules

当前加载了哪些核心模块。

/proc/partitions

系统当前挂载硬盘的分区信息

/proc/pci

系统的pci总线信息

/proc/net

网络协议状态信息。

/proc/self

到查看/proc的程序的进程目录的符号连接。当2个进程查看/proc时,是不同的连接。这主要便于程序得到它自己的进程目录。

/proc/slabinfo

系统中slab缓存的分配信息

/proc/stat

系统的一些状态信息

/proc/swaps

系统采用的交换区信息

/proc/sysrq-trigger

用于启动sysRq键

$>echo 1 > sysrq-trigger

/proc/uptime

系统启动的时间长度和空闲的时间长度。供uptime使用

/proc/version

内核版本

(3)自行实现一个/proc文件

需包含头文件,函数定义在/fs/proc/generic.c

a.在/proc下创建目录

调用:struct proc_dir_entry *proc_mkdir(const char *name,

struct proc_dir_entry *parent)

在/proc下创建文件:

struct proc_dir_entry *create_proc_entry(const char *name, mode_t mode,

struct proc_dir_entry *parent)

struct proc_dir_entry *create_proc_read_entry(

const char *name,

mode_t mode,

struct proc_dir_entry *base,

read_proc_t *read_proc,

void * data)

b.卸载/proc下的文件

采用remove_proc_entry卸载proc文件

void remove_proc_entry(

const char *name,

struct proc_dir_entry *parent);

c.定义返回数据的函数

在进程读取/proc文件时,内核会分配一个内存页(即PAGE_SIZE个字节的内存块),驱动将要写的数据通过这个内存页返回到用户空间。

typedef int (read_proc_t)(char *page, char **start, off_t off,

int count, int *eof, void *data);

思考一下,它还可以有什么作用?

在实际工作中,一般由原厂提供的驱动,有一部分厂商会在proc下创建对应的目录,用proc文件系统来进行管理,比如:现在有一家触摸屏驱动的厂商,他们写的驱动的版本号,一般就会放在proc目录下对应厂商的目录,然后创建一个类似/proc/version的文件,在应用层,通过cat  /proc/xxxx/version就可以获取到该厂商触摸屏驱动的版本信息。

下一节,我们将结合4412来实现一下。

本文同步分享在 博客“Engineer-Bruce_Yang”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

linux+proc+原理,Linux内核中的Proc文件系统(一)相关推荐

  1. Linux内核中的proc文件系统

    简介 procfs文件系统是内核中的一个特殊文件系统.它是一个虚拟文件系统: 它不是实际的存储设备中的文件,而是存在于内存中.procfs中的文件是用来允许用户空间的程序访问内核中的某些信息(比如进程 ...

  2. Linux驱动模块编译进内核中

    BQ27501驱动编译进内核 一.       驱动程序编译进内核的步骤 在 linux 内核中增加程序需要完成以下三项工作: 1. 将编写的源代码复制到 Linux 内核源代码的相应目录: 2. 在 ...

  3. Linux进程管理:内核中的优先级继承互斥(rtmutex.h):防止优先级反转

    目录 Priority inheritance in the kernel 译文 Priority inheritance in the kernel https://lwn.net/Articles ...

  4. linux 随机数原理,Linux随机数生成器的原理和缺陷.pdf

    第17卷.第10期 计算机技术与发展 vol.17No.10 2007年10月 COMPUTERTECHNOLOGYANDDEVELOPMENT Oct.2007 Linux随机数生成器的原理及缺陷 ...

  5. linux随机数原理,Linux随机数生成器的原理与缺陷.pdf

    第17卷.第10期 计算机技术与发展 vol.17No.10 2007年10月 COMPUTERTECHNOLOGYANDDEVELOPMENT Oct.2007 Linux随机数生成器的原理及缺陷 ...

  6. linux操作系统原理_Linux内核分析-操作系统是如何工作的(二)

    linux操作系统的主要构架如图1所示,我们知道,操作系统是通过管理CPU进程.存储器.文件系统.设备驱动.以及网络接口等相关部分来工作的,我们这里主要是通过分析关于CPU的操作即进程的管理执行来分析 ...

  7. linux shell 原理,linux下shell的工作原理

    linux下shell的工作原理 2009-12-8 10:19:53   出处:https://www.yqdown.com shell是用户和Linux操作系统之间的接口.Linux中有多种she ...

  8. linux bonding 原理,Linux bonding 之balance-alb 原理介绍及其实现

    Linux bonding 之balance-alb 原理介绍及其实现 要求: 首先要安***onding driver 和 ifenslave.bonding driver 是实现网卡绑定的软件基础 ...

  9. linux bonding 原理,Linux bonding介绍

    网卡bond是通过把多个物理网卡绑定为一个逻辑网卡,实现本地网卡的冗余,带宽扩容和负载均衡. bonding技术的最早应用是在集群--beowulf上,为了提高集群节点间的数据传输而设计的.下面我们讨 ...

最新文章

  1. sql server 数据库还原
  2. hue 查询 hbase 操作相关参考
  3. 16岁高中生的「卷」,用13000+行代码,从头写了一个C++机器学习库
  4. UTF-8 + BOM引起的模板空格问题(PHP使用任何模板引擎貌似都有此问题)
  5. poj 1466 Girls and Boys (最大独立集)
  6. 把“TCP/IP”协议讲明白
  7. Ynote源码涉及功能解剖
  8. 咪咕:笔试题(20190916)
  9. 熵权法用matlab怎么,熵权法求权重原理详细步骤附matlab代码
  10. 服务器硬盘安装win10系统,硬盘安装win10的方法
  11. 五个免费的pdf转换器,轻松解决pdf怎么转换成word
  12. bp神经网络简单流程包括,bp神经网络简单实例
  13. 文件扫描生成PDF文件或图片,扫描效果碾压WPS及全能扫描王
  14. 计算机连接网络被限制,本地连接受限制或无连接怎么办很简单解决教程
  15. 如何将电脑文字复制到模拟器_如何将电脑中的文字复制到手机上?
  16. 木子-前端-方法标签属性小记(普通jsp/html篇)2020-11-24
  17. 如何用建木CI一键部署Java构件到Nexus
  18. [转载]推荐不伤眼睛的文字背景色 VS背景色
  19. 算法与价值观如何平衡?凤凰新闻客户端新版给出了答案
  20. 微信墙如何搭建服务器地址,如何制作微信墙

热门文章

  1. 【Python数据挖掘课程】三.Kmeans聚类代码实现、作业及优化
  2. Git之深入解析如何重写提交历史
  3. Swift之深入解析“属性”的底层原理
  4. Swift之缓存文件处理
  5. 面试题 16.18. Pattern Matching LCCI
  6. Django 使用 HttpResponse 返回 json 字符串显示 Unicode 编码
  7. 信息学奥赛一本通(C++)在线评测系统——基础(二)基础算法 —— 1312:【例3.4】昆虫繁殖
  8. 【机器视觉】 assign_at算子
  9. 【MFC】根据菜单创建工具栏
  10. java连接linux服务器执行shell命令(框架分析+推荐)