下图展示了设备文件、设备驱动程序和硬件设备之间的关系:
Application <---> /dev/device_file <---> device driver <---> hardware device
因此,应用程序将数据写入设备文件,然后将数据传递给设备驱动程序,然后设备驱动程序将数据传递给硬件设备(读取时发生相反的情况)。
但Linux中有一些设备驱动程序不指向硬件设备,例如/dev/random设备文件指向不指向硬件设备的设备驱动程序:
Application <---> /dev/random <---> device driver
说 /dev/random 指向“设备驱动程序”是否准确,或者是否有其他术语可以使用?
答案1
你的模型不正确。开发文件由udev
(或在旧版 Linux 中)提供devfs
。现在udev
是分开的systemd
。这些都不是必需的,您可以使用具有直接 API 调用的驱动程序(就像在 Windows 中一样)。事实上,据我所知,有些系统不是用它构建的。
创建文件/dev
只是创建任何文件的函数dev
。查看mount | grep ' /dev '
udev on /dev type devtmpfs (rw,nosuid,relatime,size=8087376k,nr_inodes=2021844,mode=755)
^ See the udev. That's what created the abstraction.
驱动程序存在于内核中。提供了抽象层,以便您可以将文件/io 连接到设备。这遵循 Unix 方法论,即一切事物都是文件,但它是不是必需的。