Linux 下对设备的管理方式主要有/dev和sysfs两种,前者是将设备注册为设备节点放入/dev目录下,而后者是在linux2.6内核后引入的新的文件系统。
➤/dev方式

关于/dev的管理方式,也经历了几代,下面介绍/dev管理方式的发展:
➣静态/dev文件:   
    在Linux中,老的设备管理方式是将设备通过设备节点放入/dev目录下,每个设备节点是/dev根目录下的一个文件,那么。如何区分这些设备节点,为了对这些设备节点进行命名,Linux通过主次设备号来指定不同的设备节点。
    有了主次设备号,如何指定主次设备号成了一个开发人员必须面临的问题。如果开发人员不打算将设备驱动程序与外界共享,那么指定什么号码都可以,只要她与当前设备内核使用的其他主设备不冲突即可。然而,如果开发人员想让驱动程序与外界共享(大多数Linux开发人员常常采用这一方法),那么这样随意指定设备号进行了,因为用户和其他开发人员并不知道哪个设备号对应于改设备,因此开发人员必须联系linux内核开发人员分配一个真实主设备好,这样在整个linux世界中,只有这个特定设备号才会被关联到那个特定的设备号(即每一个设备对应一个唯一的设备号),而这个设备号也被汇入Linux的发行版本的/dev目录中。
➣基于这样的处理方式,就会产生以下问题。
    ●由于不断涌入的新设备,设备号会慢慢耗尽。
    ●这样的申请分配方式对于设备的管理比较麻烦。
    ●由于“正式”设备好不断汇入/dev目录。哪怕该设备在某些硬件上并不存在,这就导致很多设备号指向并存在的一些设备,在后期的/dev目录下甚至有上万个设备号。
➣Devfs
    linux kernel 2.4版本后引入devfs,devfs是一个虚拟的为念系统个,相比与静态的/dev文件主要有两点改进:
   ●允许使用自定的设备名称来注册设备节点,同时它兼容老的设备号,例如我们注册一个设备节点/dev/mydev
   ●所有的设备都由内核在系统启动时期创建并注册到/dev目录下,这就意味这/dev不在被成百个“无用”的设备节点充斥。
➣Udev
    Devfs解决静态/dev管理的很多问题,但是它任然存在一定缺陷,基于此,在linux kernel 2.6.x版本后,Linux引入了udev.从而对devfs进行改进。udev是一个对/dev下设备节点进行动态管理的用户空间程序,她通过自身的守护进程和自定义的一些列规则来处理设备的加载,移除和热插拔等活动。
 
相比与devfs ,它的主要改进如下:
●传统的devfs命名不够灵活,设备名称不可预知,而udev支持设备的固定命名。
    例如如果现在有两个硬盘,在devfs 中,他们们对应的设备节点分别是/dev/sda 和/dev/sdb ,那么我么就不知道硬盘对应于sda哪个又是sdb ,而udev 提供了存储设备的固定命名,任何硬盘根据其唯一的文件系统id ,磁盘名称及硬件链接的物理位置来进行识别。
●设备在热插拔的时候,用户态程序应该有办法得到通知。
    udev 运行在用户空间中,设备在热插拔时候,会通过netlink(linux 中内核空间和用户空间进程之间通信的方式)通知udev ,因此用户空间程序可以得到通知了,同时Udev运行在用户空间还可以减少内存的使用。
●devfs代码不灵活,只显示存在的设备列表,而有时候我们希望看到暂时不存在的设备名字
●major,minor 快被分配光了,我们需要考虑动态分配方法,而devfs不能支持。
    而当设备较多的时候,不能动态分配节点给设备注册造成很大的麻烦,需要不停尝试不同的设备节点以检查是否冲突。
➤sysfs
    sysfs是Linux2.6引入的一种虚拟文件系统,挂载于/sys目录下,这个文件系统吧实际链接到系统上的设备,总线及其对应的驱动程序组织成分级的文件。从而将设备的层次结构映射到用户空间中,用户空间可以通过修改sysfs 中文件属性来修改设备属性值,从而与内核设备交互。
➤udev和sysfs 的关系
    sysfs是对devfs改进,udev也是对devfs的改进。两者之间的区别与联系为:实际上用户的工具udev就是利用sysfs提供的信息来实现的:udev会根据sysfs里面的设备信息创建/dev目录下的相应设备节点。
 
 

<wiz_tmp_tag id="wiz-table-range-border" contenteditable="false" style="display: none;">

 
 
 
 

dev devfs udev sysfs及关系的更多相关文章

  1. devfs、sysfs、udev介绍

    转:http://www.360doc.com/content/11/1203/09/7378000_169310928.shtml 一.devfs linux下有专门的文件系统用来对设备进行管理,d ...

  2. linux内核文件系统:proc、tmpfs、devfs、sysfs简要介绍

    linux内核文件系统:proc.tmpfs.devfs.sysfs proc:虚拟文件系统,在linux系统中被挂载与/proc目录下.里面的文件包含了很多系统信息,比如cpu负载. 内存.网络配置 ...

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

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

  4. Linux驱动开发3——devfs udev procfs sysfs debugfs傻傻地分不清楚

    Linux调试文件系统 1.1.procfs 早期的Linux内核中,内核通过procfs输出调试信息,可以在用户态通过读写procfs节点与内核进行交互,用来获取处理器.内存.设备驱动.进程等各种信 ...

  5. Linux┊理解devfs、sysfs、udev、tmpfs等各种文件系统

    https://www.cnblogs.com/yangliheng/p/6187193.html https://blog.csdn.net/qq258711519/article/details/ ...

  6. udev和mdev hotplug事件

    关于udev和mdev之间的区别与联系我发现自己现在还没有把它完整的给区分开来和联系起来. 设备文件系统有devfs,mdev,udev mdev是udev的简化版本,是busybox中所带的程序,最 ...

  7. 关于实现udev/mdev自动挂载与卸载

    在网上有很多关于讲mdev的自动挂载基本上都是一个版本,经过测试自动挂载确实可行,但是关于自动卸载mdev似乎不能很好的支持,经过修改已经可以做到与udev的效果相似.不能在挂载的目录中进行热插拔,否 ...

  8. linux下udev简介

    一.关于Udev u即user space,dev是device,通过它的名字,我们就可以简单了解到,它是一个和用户态相关的驱动设备管理机制.udev是一个针对2.6内核的文件系统.提供一种基于用户空 ...

  9. linux下udev简介【转】

    本文转载自:http://blog.csdn.net/skyflying2012/article/details/9364555 一.关于Udev u即user space,dev是device,通过 ...

随机推荐

  1. 【Nginx】修改响应头,根据不同请求IP重定向到不同IP

    背景: 使用CAS登录的过程中会涉及到三次重定向,如果在同一个局域网内,是没有任何问题的,但如果涉及到跨网访问,这个问题就比较蛋疼了. 解决思路: 通过Nginx对要访问的系统进行代理,根据请求IP来 ...

  2. 编程笔记:JavaScript 中的类型检查

    在Badoo的时候我们写了大量的JS脚本,光是在我们的移动web客户端上面就有大概60000行,可想而知,维护这么多JS可是相当具有挑战性的.在写如上规模js脚本客户端应用的时候我们必须对一件事保持警 ...

  3. Unity下实现弹簧骨骼(Spring Bone)

    关于这个效果的名称,我一直没找到一个比较正式的说法.Spring Bone这个说法是来自于Anima2D这个插件中的一个演示用的脚本,我直接译成弹簧骨骼. 一般常见于对人物的头发的模拟上. 当然也可以 ...

  4. ueditor和thinkphp框架整合修改版

    基于tp官网上的一篇文章修改的  因为tp中所有目录其实都是性对于入口文件的 在原来的基础上略做修改后 已经做到 无论项目放在www下的任何位置 图片在编辑器中回填后都能正常显示! http://fi ...

  5. app 测试基础

    1. 安装和启动 (1) OTA安装测试 ·         app必须能够通过ota安装到测试设备上 ·         如果app安装完后没有icon,那么必须能够通过其他的方法来启动这个app ...

  6. Linux内存高,触发oom-killer问题解决

    最近遇到两起Linux的内存问题,其一是触发了oom-killer导致系统挂 1. 首先确认该系统的版本是32位 ? #uname -a Linux alarm 2.6.9-67.ELsmp #1 S ...

  7. cpu几种架构区别

    转自:http://smilejay.com/2012/07/intel-procssor-architecture/ (1)x86 (IA-32,i386,x86-32,x32) x86是指基于In ...

  8. 在C#中用MediaInfo获取视频或音频的属性

    MediaInfo是一个开源的获取视频或音频的信息的非常便利的工具,它本身就带有一个GUI界面,可以非常方便我们查看视频信息.但是,当我们写一些转码程序时,往往需要在程序中获取视频信息的时候. 以前我 ...

  9. php判断是手机还是pc访问从而走不同url

    <?php header("Content-type:text/html;charset=utf-8"); function is_mobile(){ $user_agent ...

  10. SuSE Linux Supervisor的安装与使用案例

      建议使用 root 管理员账户操作 1.安装工具 1.apache 2..Net Core(dotnet-sdk-2.0) 3.Supervisor(进程管理工具,目的是服务器一开机就启动服务器 ...