插件窝 干货文章 linux系统中设备分为几类

linux系统中设备分为几类

设备 dev 访问 文件 694    来源:    2025-05-02

在Linux系统中,设备被抽象为文件(设备文件),主要分为以下几类:


1. 块设备(Block Devices)

  • 特点:以固定大小的数据块(如512B、4KB)为单位进行随机读写,支持缓存(Buffer)。
  • 典型用途:存储设备(如硬盘、SSD、U盘等)。
  • 访问方式:通过文件系统挂载后访问(如/dev/sda1)。
  • 设备号:主设备号(Major)标识驱动,次设备号(Minor)标识具体设备。
  • 示例命令bash ls -l /dev/sda* # 查看块设备

2. 字符设备(Character Devices)

  • 特点:以字节流(Byte-by-Byte)顺序访问,不支持缓存(直接与硬件交互)。
  • 典型用途:键盘、鼠标、串口、打印机等实时性要求高的设备。
  • 访问方式:直接读写设备文件(如/dev/ttyS0)。
  • 示例命令bash ls -l /dev/tty* # 查看字符设备

3. 网络设备(Network Devices)

  • 特点:通过网络协议栈(如TCP/IP)访问,无对应的设备文件。
  • 典型用途:网卡(eth0、wlan0等)。
  • 访问方式:通过套接字(Socket)和网络接口(如ifconfigip addr)。
  • 特殊点:Linux将网络设备视为特殊类别,不归入/dev目录。

4. 其他特殊设备

  • 伪设备(Pseudo Devices)
    • 无实际硬件对应,由内核模拟(如/dev/null/dev/zero/dev/random)。
  • 设备映射(Device Mapper)
    • 逻辑卷管理(LVM)、加密卷等(如/dev/mapper/...)。

如何查看设备信息?

  1. 列出所有设备bash ls -l /dev # 查看设备文件 lsblk # 查看块设备树状结构
  2. 查看设备类型bash file /dev/sda1 # 显示块设备 file /dev/tty1 # 显示字符设备
  3. 查看设备号bash ls -l /dev/sda | awk '{print $5,$6}' # 输出主/次设备号

关键区别总结

类型 访问方式 缓存 典型设备
块设备 数据块随机读写 支持 硬盘、SSD
字符设备 字节流顺序读写 不支持 键盘、串口
网络设备 网络协议栈 不适用 网卡
伪设备 内核模拟 不适用 /dev/null, /dev/zero

通过这种分类,Linux统一了硬件访问接口,使应用程序可以像操作文件一样操作设备。