命名管道是否有相应的设备驱动程序?

时间:2016-11-02 13:44:24

标签: c pipe named-pipes

  

定义:   设备文件是程序和设备驱动程序之间的接口设备驱动程序位于内核中;程序(应用程序)位于用户空间中。程序可以通过适当的设备专用文件访问内核中的驱动程序。

命名管道作为文件系统中的设备专用文件存在。

我的问题:

我是命名管道的情况,如果它是设备专用文件,那么(根据定义)设备文件是内核空间中某些设备驱动程序的接口。内核空间中是否存在相应的设备驱动程序

因为,我看不到

以下的主要/次要数字
$ ls -l MYFIFO
        prw-r--r--   1 root     root            0 Dec 14 22:15 MYFIFO|

1 个答案:

答案 0 :(得分:1)

让我们定义"内核"作为两类东西 - "核心服务" (如物理内存管理,调度程序等),然后是"非核心服务" (并不总是存在的东西,如设备驱动程序,文件系统等 - 例如ext2可能不存在,因为您正在使用RieserFS)。 请注意,这已经限于特定类型的内核(例如单片内核而不是微内核)。

让我们定义"设备驱动程序"作为一段代码,它位于一个抽象(内核的设备驱动程序API,由OS /内核设计者确定)和另一个抽象(由相应设备提供的硬件接口,由硬件设计人员/制造商确定)之间)。

对于几乎所有的内核,其中一个核心服务"是IPC(进程间通信) - 进程通信的某种方式。对于许多内核,有多种不同形式的IPC(共享内存,消息,信号等)。管道只是IPC的另一种形式。

大多数管道都没有名称 - 您只是获得某种不透明的句柄(例如文件描述符)。命名管道与普通管道相同;除了您将名称与管道关联,以便其他进程可以从"已知的"中找到不透明的句柄。名。

基于以上所有内容;命名管道没有设备驱动程序(并且是"核心服务"因此甚至与设备驱动程序不在同一类别中)。

然而,"基于以上所有"根据我制定的定义"表示"。这里真正的问题是对于如何定义任何术语没有真正的共识。这就是好书(以及优秀的操作系统文档)将明确定义这些内容的原因。这也是为什么阅读这个答案的人中有一半会不同意(因为他们定义了像#34;设备驱动程序和#34;不同的东西)。