为什么 Linux 需要同时拥有 `/dev/cdrom` 和 `/media/cdrom`?

为什么 Linux 需要同时拥有 `/dev/cdrom` 和 `/media/cdrom`?

灵感来自这个问题。为什么 Linux 需要/dev/cdrom/media/cdrom

为什么不直接通过 访问 CDROM 上的文件/dev/cdrom

答案1

/media/cdrom是一个公约挂载点,而/dev/cdrom是可以安装在前者上的特殊装置。

您需要两者,因为它们有不同的用途:大多数应用程序不直接从特殊设备读取,但可以从文件系统(已安装的东西)读取

答案2

(感谢这么多人对我的问题的回答。在网上搜索了一段时间后,我想分享一下我自己的理解。)

根据这里:

在类 Unix 操作系统中,设备文件或特殊文件是设备驱动程序的接口它在文件系统中就像一个普通文件一样。

根据这里:

mount 命令的作用附加文件系统在某些设备上找到大文件树。

所以,我认为这里有两个不同级别的软件抽象:

  • /dev/cdrom是设备专用文件。它将CD-ROM硬件抽象为块IO设备。这个抽象是由提供的设备驱动

  • /media/cdrom是文件系统的挂载点。因此它提供了CD-ROM硬件的更高层次的抽象,即作为文件系统。例如ISO-9660 文件系统。这个抽象是由文件系统驱动程序

所以基本上,2 个不同的文件位置用于 2 个不同的抽象级别。而且在不同的场景下,我们可能需要不同的。我认为其他操作系统(例如 Windows)也提供了如此不同的选项,只是 Linux 将其统一到单个文件层次结构中。

(我想也许我应该做一些实验,在 Linux 上编写一些 C 代码来与 和 进行交互/dev/cdrom/media/cdrom看看一切是如何进行的。)

(我会继续学习并酌情完善我的理解。)

答案3

为什么我们同时拥有/dev/cdrom/media/cdrom

为什么我们同时拥有/dev/sda2/home

基本上,/dev/cdrom是一个文件。当您访问它时,您正在访问 CD 上的各个位和字节(如果有的话)。而/media/cdrom是一个文件夹。当您访问它时,您正在访问文件存储在 CD 上。

同样,/dev/sda2表示第一个硬盘驱动器上第二个分区的原始内容。例如,如果您想格式化分区,您可以直接写入该分区。 (该mkfs程序从字面上打开/dev/sda2或其他什么,并将特定的位模式写入其上。)然后您 /dev/sda2比如说,/home现在您可以访问实际的文件。当您通过挂载点访问文件时,文件系统驱动程序正在读取和写入底层设备文件。

这就是 Unix 做事的方式。

答案4

可以在这里找到涵盖此(以及更多)内容的良好信息来源https://en.wikipedia.org/wiki/Filesystem_Hierarchy_Standard

  • /media => 可移动介质(如 CD-ROM)的安装点(出现在 FHS-2.3 中)。
  • /mnt => 临时挂载的文件系统。

相关内容