为什么Linux中的每个设备都是一个文件或文件夹?有什么优点?

为什么Linux中的每个设备都是一个文件或文件夹?有什么优点?

为什么Linux中的每个设备都是一个文件或文件夹?有什么优点?以及文件/dev/sda1的必要性是什么?它的大小为 0 字节。安装硬盘后,文件位于文件夹 中。为什么需要这样的文件?/dev/sda2/dev/sda3/media/dev/sda1

答案1

我将尝试回答“为什么 Linux 中的每个设备都是一个文件”这个专门针对数据存储的问题(因为该问题以它们为例)。关于 POSIX 哲学的更深入的答案可能也很有趣。

这里的基本概念是,几乎计算机中的每个操作本质上都归结为移动数据。数据被读取、转换和写入。当然,根据读取数据的来源或写入数据的目标硬件,实际结果完全不同。

从历史上看,流行的数据存储设备(假设硬盘驱动器)是由 SCSI 驱动程序处理的。这就是为什么存储通常以 为前缀sd。然后,您需要单个物理“硬件”设备的逻辑“软件”表示。您只需对它们进行编号,从 开始a。连接起来的硬盘驱动器可以称为sda

现在您有了一个可以从中读取数据的“文件”(写入类似)。如果您从 读取第一个字节/dev/sda,您实际上将读取实际上位于该数据存储设备最开头的字节(为了简单起见,忽略块大小)。您可以通过启动自己尝试一下sudo hexdump -C /dev/sda | less。当然,大部分内容肉眼看来都是乱码。
但是,如果您解释了该乱码,那么您就知道分区从哪里开始并且在该分区中,程序(文件系统驱动程序)会为您解释数据,并呈现一个漂亮的树状结构,其中包含文件夹和文件,然后您可以从中读取数据。

有趣的事实:这也(在不同程度上)适用于其他类型的设备(字符设备),例如键盘和鼠标(它们“生成”您可以读取的数据):)sudo hexdump -C /dev/input/mouse0
或者主内存。
甚至图形内存(帧缓冲区):我偶尔喜欢切换到虚拟控制台之一(Ctrl+Alt+F1),并让我的显卡通过以下方式解释和显示随机数:sudo dd if=/dev/urandom of=/dev/fb0 bs=1M count=1

相关内容