从工作机制角度看设备分:字符设备、块设备和网络设备
- 字符设备以顺序的方式读写,即字节流的方式,如下图a、b、c、d有序的、不等价的。
- 块设备以随机的方式读写,可以定位并读写任意的块单元,如下图所有的a是无序的、等价的。
- 网络设备则是顺序和随机的结合,宏观角度以包为单位顺序的读写,微观角度以包内字节为单位随机的读写,如下图A、B、C、D有序的、不等价的,但A包内的a却是a是无序的、等价的。
+----+----+----+----+
<- | a | b | c | d | 流/顺序
+----+----+----+----+
+----+----+----+----+
| a | a | a | a |
+----+----+----+----+
| a | a | a | a |
* +----+----+----+----+ 随机/无序
| a | a | a | a |
+----+----+----+----+
| a | a | a | a |
+----+----+----+----+
+---------+ +---------+ +---------+ +---------+
<- | A | | B | | C | | D | 流/顺序
+----+----+ +----+----+ +----+----+ +----+----+
| a | a | | b | b | | c | c | | d | d |
* +----+----+ +----+----+ +----+----+ +----+----+ 随机/无序
| a | a | | b | b | | c | c | | d | d |
+----+----+ +----+----+ +----+----+ +----+----+
/--------------------------------
/
/-------------------------------- char dev
/
/------------------------------- block dev
/
/----------------------------- net dev
/
/
从设备所依附的总线的角度设备分:platform设备、usb设备、pci设备。
/-------/-------/-------/--------
/ / / /
/-------/-------/-------/-------- char dev
/ / / /
/-------/-------/-------/-------- block dev
/ / / /
/-------/-------/-------/------- net dev
/ / / /
/ / / /
platform usb pci
dev dev dev
从分类的角度设备可以分成:input设备,output设备,tty设备
z
|
* tty dev
|
|
* output dev
|
|
*-------* input dev
/ /|
*-------* |
| | | |
| | | |
| *-----|-*-------*-------*-------- y
|/ |/ / /
*-------*-------*-------*-------- char dev
/ / / /
*-------*-------*-------*-------- block dev
/ / / /
*-------*-------*-------*------- net dev
/ / / /
/ / / /
x platform usb pci
dev dev dev
综上所述,可以(x,y,z)这样的三元组来描述一个设备的不同方面。