dev设备
按照读取方式:
- 字符设备(Character devices):无缓冲且只能顺序读取。
- 块设备(Block devices):有缓冲且可以随机(乱序)读取。
按照是否对应物理实体:
- 物理设备:对实际存在的物理硬件的抽象。
- 虚拟设备:不依赖特定的物理硬件,仅是内核自身提供的某种功能。(虚拟设备与真实设备的关系是多对多)
无论哪种设备,在dev目录下都有一个对应的文件(节点),并且每个设备文件都必须有主/次设备号,主设备号相同的设备是同类设备,使用同一个驱动程序(虽然目前的内核允许多个驱动共享一个主设备号,但绝大多数设备依然遵循一个驱动对应一个主设备号的原则)。可以通过 cat /proc/devices 命令查看当前已经加载的设备驱动程序的主设备号。
设备号的来历
linux的设备管理是和文件系统紧密结合的,各种设备都以文件的形式存放在/dev目录下,称为设备文件。应用程序可以打开、关闭和读写这些设备文件,完成对设备的操作,就像操作普通的数据文件一样。为了管理这些设备,系统为设备编了号,每个设备号又分为主设备号和次设备号。主设备号用来区分不同种类的设备,而次设备号用来区分同一类型的多个设备。
crw------- 1 root root 5, 1 Feb 11 02:08 console
crw-rw-rw- 1 root tty 5, 0 Feb 10 21:22 tty
crw--w---- 1 root tty 4, 0 Feb 10 19:18 tty0
cr