设备文件和设备驱动程序之间的区别

Sid*_*rth 6 linux linux-device-driver

我目前正在阅读Linux模块编程指南,我偶然发现了两个让人困惑的术语 - 设备文件和设备驱动程序.在仔细阅读这些条款后,我遇到以下情况 -

设备驱动程序是一种操作或控制特定类型设备的软件.

设备文件是设备驱动程序的接口,它出现在文件系统中,就像它是普通文件一样.在类Unix操作系统中,这些通常位于/ dev目录下,也称为设备节点.

我想知道的是 -

1)设备文件是用户空间程序和设备驱动程序之间的接口吗?2)程序是否通过相应的设备专用文件访问内核中的驱动程序?

例如,当使用say spidev char dev文件时,是否允许我的用户空间程序使用简单的read,write和ioctl调用与spi.c和omap2_mcspi.c等进行交互?

sup*_*esk 6

Unix中的主要抽象之一是文件():

程序,服务,文本,图像等都是文件.根据系统,输入和输出设备以及通常所有设备被认为是文件.

这使得用户可以使用统一的操作集处理各种实体,即使通过执行这些操作可能会有很大的不同.

当您遇到问题时,设备文件是面向抽象的用户.这是用户看到的; 他们可以写入,读取,打开,关闭等文件.设备驱动程序是这些操作的实现.

因此用户将调用诸如write之类的文件操作,然后内核将使用设备驱动程序来执行操作.