Contents
  1. 1. 字符设备
  2. 2. 块设备
  3. 3. 网络设备
  • 伪设备
  • Linux中设备分为:字符设备、块设备、网络设备、伪设备。

    字符设备

    字符设备是指每次与系统传输1个字符的设备。这些设备节点通常为传真、虚拟终端和串口调制解调器之类设备提供流通信服务,它通常不支持随机存取数据。

    字符设备在实现时,大多不使用缓存器。系统直接从设备读取/写入每一个字符。

    块设备

    块设备是指与系统间用块的方式移动数据的设备。这些设备节点通常代表可寻址设备。块设备的数据可以随机地被访问,而且从人类用户的观点看,传送任何数据块所需的时间都是较少而且是大致相同的。块设备的典型例子是硬盘、软盘。块设备一般情况下是带缓冲区的。

    当程序向设备发送了读取或者写入数据的请求时,系统把数据中的每一个字符存储在适当的缓存中。当缓存被填满时,会采取适当的操作(把数据传走),而后系统清空缓存。

    网络设备

    网络设备是特殊设备的驱动,它负责接收和发送帧数据,可能是物理帧,也可能是ip数据包,这些特性都有网络驱动决定。它并不存在于/dev下面,所以与一般的设备不同。网络设备是一个net_device结构,并通过register_netdev注册到系统里,最后通过ifconfig -a的命令就能看到。

    伪设备

    在类Unix操作系统中,设备节点并不一定要对应物理设备,没有这种对应关系的设备是伪设备,经常用到的伪设备如下:

    • /dev/null
      接受并丢弃所有输入;即不产生任何输出。
    • /dev/full
      永远在被填满状态的设备。
    • /dev/loop
      Loop设备
    • /dev/zero
      产生连续的NUL字元的串流(数值为0)。
    • /dev/random
      产生一个虚假随机的任意长度字元串流(Blocking)。
    • /dev/urandom
      产生一个虚假随机的任意长度字元串流(Non-Blocking)。
    Contents
    1. 1. 字符设备
    2. 2. 块设备
    3. 3. 网络设备
  • 伪设备