【发布时间】:2016-03-18 15:04:14
【问题描述】:
设备的设备文件(例如/dev/sda1)是否由操作系统(更具体地说,Linux 或类 Unix 操作系统)内的某些组件实现?
设备的设备文件是否由操作系统的 IO 系统的以下任一组件实现:
- “独立于设备的操作系统软件”,
- “设备驱动程序”,或
- 操作系统中的其他内容?
参见 Tanenbaum 的 Modern OS 对 I/O 软件系统各层的草图,其中操作系统由中间三层组成:
了解到设备文件属于设备驱动提供的接口,所以我认为设备文件是由设备文件实现的。
但设备文件旨在允许用户以统一的方式将不同的设备视为文件系统中的文件。这让我认为设备文件属于操作系统最外层组件提供的接口,根据草图是“与设备无关的操作系统软件”。
所以我不确定。
【问题讨论】:
-
由文件系统和设备驱动程序实现。 linux kernel wikipage 有更多相关的解释和数据
-
谢谢。 (1)在设备文件的实现中,文件系统是不是在设备驱动层之上的一层? (2) “设备无关的OS软件”不实现设备文件是否正确?
-
我不确定Tanenbaum 书中的所有细节是否完全适用于每个操作系统(尤其是Linux)。如果您想了解 Linux 内核,请阅读专门针对它的材料(有很多关于 Linux 内核的好书和网站)。所以你的问题可能没有任何意义(对于 Linux)
-
我在 (1) 中的问题怎么样?你知道 Linux IO 软件系统的草图,它明确地显示了设备文件的实现位置吗?
-
所有操作都通过虚拟文件系统。可以在
/fs/read_write.c找到它的部分实现。阅读代码,您可以发现每个文件都有与之关联的操作,这些操作是由设备驱动程序或文件系统初始化的。这些操作由 VFS 中的通用函数调用。
标签: linux file operating-system device device-driver