linux设备节点

来源:互联网 发布:2016nba夏季联赛数据 编辑:程序博客网 时间:2024/06/11 10:07

 Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。

        在一个系统里,硬件描述通常用法就是一个设备对应一个术语,包括磁盘、打印机、显卡和键盘。当 FreeBSD 启动过程中,大多数的设备都能探测到并显示出来, 您也可以查阅/var/run/dmesg.boot, 引导时所有信息都在里面。

  例如, acd0 就是 首个 IDE 光盘设备, 而 kbd0 则代表键盘。

  在UNIX®操作系统里,大多数设备存在的特殊访问文件就是叫做设备节点,他们都定位在/dev目录里。

        当在系统中添加新设备或将附加设备的支持编译进内核之后,都必须为其建立设备节点。

 

        我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。

 

        最后,设备管理和驱动的编写都要理解节点的概念。

设备档(device):与系统周边相关的一些档案,通常都集中在/dev这个目录之下!通常又分为两种:区块(block)设备档:就是一些储存数据,以提供系统存取的接口设备,简单的说就是硬盘啦!例如你的一号硬盘的代码是/dev/hda1等等的档案啦!第一个属性为“ b “;字符(character)设备档:亦即是一些串行端口的接口设备,例如键盘、鼠标等等!第一个属性为“ c “。