本文共 1343 字,大约阅读时间需要 4 分钟。
日前,在学习android的时候经常遇到XXXX节点,于是现在参考:http://blog.csdn.net/Bestrem_9/archive/2009/03/19/4004335.aspx(还有其他文献)将节点的概念总结如下:
节点的概念是设备管理需要的。
Linux 中的设备有2种类型:字符设备(无缓冲且只能顺序存取)、块设备(有缓冲且可以随机存取)。每个字符设备和块设备都必须有主、次设备号,主设备号相同的设备是同类设备(使用同一个驱动程序)。这些设备中,有些设备是对实际存在的物理硬件的抽象,而有些设备则是内核自身提供的功能(不依赖于特定的物理硬件,又称为"虚拟设备")。每个设备在 /dev 目录下都有一个对应的文件(节点)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
在一个系统里,硬件描述通常用法就是一个设备对应一个术语,包括磁盘、打印机、显卡和键盘。当 FreeBSD 启动过程中,大多数的设备都能探测到并显示出来, 您也可以查阅/var/run/dmesg.boot, 引导时所有信息都在里面。
例如, acd0 就是 首个 IDE 光盘设备, 而 kbd0 则代表键盘。
在UNIX®操作系统里,大多数设备存在的特殊访问文件就是叫做设备节点,他们都定位在/dev目录里。
当在系统中添加新设备或将附加设备的支持编译进内核之后,都必须为其建立设备节点。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我们在刚开始写Linux设备驱动程序的时候,很多时候都是利用mknod命令手动创建设备节点,实际上Linux内核为我们提供了一组函数,可以用来在模块加载的时候自动在/dev目录下创建相应设备节点,并在卸载模块时删除该节点,当然前提条件是用户空间移植了udev。
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
最后,设备管理和驱动的编写都要理解节点的概念。