linux内核文件系统:proc、tmpfs、devfs、sysfs

proc:虚拟文件系统,在linux系统中被挂载与/proc目录下。里面的文件包含了很多系统信息,比如cpu负载、 内存、网络配置和文件系统等等。我们可以通过内部文本流来查看进程信息(正在运行的各个进程的PID号也以目录名形式存在/proc目录下)和机器的状态。

常见的目录:

  1. apm             # 高级电源管理信息  
  2. bus             # 总线配置信息(USB的配置也记录在此)  
  3. cmdline         # 内核命令行  
  4. Cpuinfo         # 关于Cpu信息  
  5. Devices         # 可以用到的设备(块设备/字符设备)  
  6. Dma             # 使用的DMA通道  
  7. Filesystems     # 支持的文件系统  
  8. Interrupts      # 中断的使用  
  9. Ioports         # I/O端口的使用  
  10. Kcore           # 内核核心印象  
  11. Kmsg            # 内核消息  
  12. Ksyms           # 内核符号表  
  13. Loadavg         # 负载均衡  
  14. Locks           # 内核锁  
  15. Meminfo         # 内存信息  
  16. Misc            # 杂项  
  17. Modules         # 加载模块列表(可以想成是驱动程序)  
  18. Mounts          # 加载的文件系统  
  19. Partitions      # 系统识别的分区表  
  20. PCI             # 在PCI总线上,每台设备的详细情况(可以使用lspci来查看)  
  21. Rtc             # 实时时钟  
  22. Slabinfo Slab   # 池信息  
  23. Stat            # 全面统计状态表  
  24. Swaps           # 对换空间的利用情况  
  25. Version         # 内核版本   
  26. Uptime          # 系统正常运行时间

tmpfs:虚拟内存文件系统,使用内存作为临时存储分区,掉电之后会丢失数据,创建时不需要使用mkfs等格式化

1.tmpfs挂载:

mount  -t  tmpfs  -o  size=20M tmpfs  /tmp

df -h

使用/etc/fstab条目:tmpfs  /tmp  tmpfs  default  0  0

2.tmpfs使用:

用来存储临时生成信息

正常使用挂载目录:创建文件,存储信息,删除文件等

3.tmpfs作用

因为内存的访问速度高于flash,所以可以提高存储效率,避免对flash频繁读写(flash寿命有限)

devfs:设备文件,提供类似于文件的方法来管理位于/dev目录下的设备

1.根目录/dev

设备文件创建

创建根文件系统时创建基本的,比如console,tty*等等

设备驱动加载时创建相应的设备文件

2.特殊设备文件

/dev/console

/dev/null    /dev/zero  :黑洞文件

3.缺点

不确定的设备映射,有时一个设备映射的设备文件可能不同,假如挂载的u盘可能对应sda也可能对应sdb

没有足够的主/辅设备号,当设备过多的时候,显然会成为一个问题

sysfs:虚拟内存文件系统,2.6内核之前没有规定sysfs的标准挂载目录,但是在2.6之后就规定了要挂载到/sys目录下(针对以前的 sysfs 挂载位置不固定或没有标准被挂载,有些程序从 /proc/mounts 中解析出 sysfs 是否被挂载以及具体的挂载点,这个步骤现在已经不需要了)。它的作用类似于proc,但除了与 proc 相同的具有查看和设定内核参数功能之外,还有为 Linux 统一设备模型作为管理之用。相比于 proc 文件系统,使用 sysfs 导出内核数据的方式更为统一,并且组织的方式更好。

与proc的比较:

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

挂载:

mkdir  sys

mount -t  sysfs   /sysfs

很好的参考文章:https://www.ibm.com/developerworks/cn/linux/l-cn-sysfs/(使用 /sys 文件系统访问 Linux 内核)

Technorati Tags: linux

linux内核文件系统:proc、tmpfs、devfs、sysfs简要介绍的更多相关文章

  1. 关于Linux内核学习的误区以及相关书籍介绍

    http://www.hzlitai.com.cn/article/ARM9-article/system/1605.html 写给Linux内核新手-关于Linux内核学习的误区 先说句正经的:其实 ...

  2. 模仿Linux内核kfifo实现的循环缓存

    想实现个循环缓冲区(Circular Buffer),搜了些资料多数是基于循环队列的实现方式.使用一个变量存放缓冲区中的数据长度或者空出来一个空间来判断缓冲区是否满了.偶然间看到分析Linux内核的循 ...

  3. Linux 内核学习的经典书籍及途径

    from:http://www.zhihu.com/question/19606660 知乎 Linux 内核学习的经典书籍及途径?修改 修改 写补充说明 举报   添加评论 分享 • 邀请回答   ...

  4. linux内核无锁缓冲队列kfifo原理

    Linux kernel里面从来就不缺少简洁,优雅和高效的代码 比如,通过限定写入的数据不能溢出和内存屏障实现在单线程写单线程读的情况下不使用锁.因为锁是使用在共享资源可能存在冲突的情况下.还用设置b ...

  5. 《Linux内核分析》期末总结

    Linux内核设计期中总结 版权声明:本文为博主原创文章,未经博主允许不得转载. 前八周博客汇总及总结 Linux内核设计第一周——从汇编语言出发理解计算机工作原理 我们学习了汇编语言的基础知识,这一 ...

  6. 【转】6.4.6 将驱动编译进Linux内核进行测试

    原文网址:http://www.apkbus.com/android-98520-1-1.html 前面几节都是将Linux驱动编译成模块,然后动态装载进行测试.动态装载驱动模块不会随着Android ...

  7. 嵌入式C语言自我修养 04:Linux 内核第一宏:container_of

    4.1 typeof 关键字 ANSI C 定义了 sizeof 关键字,用来获取一个变量或数据类型在内存中所占的存储字节数.GNU C 扩展了一个关键字 typeof,用来获取一个变量或表达式的类型 ...

  8. Linux设备管理之权限倾斜——mem、proc、devfs、sysfs、udev(下)

    linux发展第一阶段 01devfs(linux2.6之前) 02udev(用户空间) 03sysfs(linux2.6之后,描述设备属性) linux发展第二阶段 01sysfs+udev(ude ...

  9. (转)使用 /proc 文件系统来访问 Linux 内核的内容

    转载网址:http://www.ibm.com/developerworks/cn/linux/l-proc.html 这个虚拟文件系统在内核空间和用户空间之间打开了一个通信窗口/proc 文件系统是 ...

随机推荐

  1. Codeforces Round #335 (Div. 2) D. Lazy Student 贪心+构造

    题目链接: http://codeforces.com/contest/606/problem/D D. Lazy Student time limit per test2 secondsmemory ...

  2. IDEA + SSH OA 第一天(项目收获:Hibernate XML)

    之前都是用工具逆向生成代码,很少写配置文件,今天试着使用,有几点需要注意 Cascade(级联): Cascade代表是否执行级联操作,Inverse代表是否由己方维护关系. Cascade属性的可能 ...

  3. jQuery之数组处理函数

    摘要:$.each,$.grep,$.map,$.merge,$.inArray,$.unique,$.makeArray 1. $.each(array, [callback]) 遍历[常用] 解释 ...

  4. 蜗牛慢慢爬 LeetCode 2. Add Two Numbers [Difficulty: Medium]

    题目 You are given two non-empty linked lists representing two non-negative integers. The digits are s ...

  5. linux应用自启动配置

    Linux在启动时,会自动执行/etc/rc.d目录下的初始化程序,因此我们可以把启动任务放到该目录下: 1.因为其中的rc.local是在完成所有初始化之后执行,因此可以把启动脚本写到里面: 2.用 ...

  6. phpcms前端模板目录与文件结构分析图【templates】

    phpcms前端模板目录与文件结构分析图[templates] 原文地址:http://www.iphpcms.net/phpcms-ziliao/2015_14.html

  7. CSS中可以和不可以继承的属性【转】

    一.无继承性的属性 1.display:规定元素应该生成的框的类型 2.文本属性: vertical-align:垂直文本对齐 text-decoration:规定添加到文本的装饰 text-shad ...

  8. Spring学习 6- Spring MVC (Spring MVC原理及配置详解)

    百度的面试官问:Web容器,Servlet容器,SpringMVC容器的区别: 我还写了个文章,说明web容器与servlet容器的联系,参考:servlet单实例多线程模式 这个文章有web容器与s ...

  9. .netMVC Vue axios 获取数据

    网页 <link href="~/Content/css/bootstrap-theme.min.css" rel="stylesheet" /> ...

  10. bzoj1093[ZJOI2007]最大半连通子图(tarjan+拓扑排序+dp)

    Description 一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u ...