首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命名管道有相应的设备驱动程序吗?

命名管道有相应的设备驱动程序吗?
EN

Stack Overflow用户
提问于 2016-11-02 13:44:23
回答 1查看 515关注 0票数 0

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

命名管道作为设备特殊文件存在于文件系统中。

我的问题是:

在命名管道的情况下,如果它是一个设备特殊文件,那么(根据定义)设备文件就是内核空间中某个设备驱动程序的接口。相应的设备驱动程序是否存在于内核空间?

因为,我看不到下面的大数/小数。

代码语言:javascript
复制
$ ls -l MYFIFO
        prw-r--r--   1 root     root            0 Dec 14 22:15 MYFIFO|
EN

回答 1

Stack Overflow用户

发布于 2016-11-02 15:13:23

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

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

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

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

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

然而,“基于以上所有”的意思是“基于我所编的定义”。这里真正的问题是,对于如何定义任何术语,并没有真正的共识。这就是为什么好书(和好的OS文档)将显式定义这些东西的原因。这也是为什么大约一半读过这个答案的人会不同意(因为他们对“设备驱动程序”的定义不同)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40381500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档