如果它不指向硬件设备,它是否被称为“设备驱动程序”?

如果它不指向硬件设备,它是否被称为“设备驱动程序”?

下图展示了设备文件、设备驱动程序和硬件设备之间的关系:

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 方法论,即一切事物都是文件,但它是不是必需的。

相关内容