在 Linux 系统中,设备主要分为以下几类,除了常见的块设备(Block Device),还有其他重要的设备类型:
/dev/input/*
)/dev/ttyS*
)/dev/tty*
)/dev/random
、/dev/urandom
)/dev/snd/*
)open()
、read()
、write()
等系统调用直接操作。eth0
、wlan0
)访问,不以文件形式存在于 /dev
目录。数据传输基于数据包(Packet)。eth0
)wlan0
)tun/tap
)ifconfig
、ip
、nmcli
等。/dev/null
(黑洞设备,丢弃所有写入的数据)/dev/zero
(提供无限的空字符 \0
)/dev/loop*
(环回设备,将文件模拟为块设备)/dev/pts/*
(伪终端,用于 SSH 或终端仿真)procfs
(/proc
):提供进程和内核信息的虚拟文件系统。sysfs
(/sys
):暴露内核对象(设备、驱动等)的层级结构。devtmpfs
(/dev
):动态管理设备节点的虚拟文件系统。/dev/misc
,用于无法明确归类的设备(如内核调试接口)。/dev/dri/*
或专用驱动(如 NVIDIA 的 /dev/nvidia*
)访问。bash
ls -l /dev # 查看设备文件类型
c
(如 crw--w---- 1 root tty 4, 1 /dev/tty1
)。b
(如 brw-rw---- 1 root disk 8, 0 /dev/sda
)。ip link
或 ifconfig
查看,无 /dev
节点。类型 | 访问方式 | 缓存 | 典型用途 |
---|---|---|---|
块设备(b) | 按块随机访问 | 有缓存 | 磁盘、SSD |
字符设备(c) | 按字节流顺序访问 | 通常无缓存 | 键盘、串口、终端 |
网络设备 | 数据包(Socket) | 无文件节点 | 网卡、虚拟网络接口 |
通过理解这些设备类型,可以更高效地管理 Linux 系统硬件资源或开发驱动程序。如果需要进一步探讨某一类设备,请随时提问!