linux:一切都是文件会降低性能吗?

linux:一切都是文件会降低性能吗?

我有一个问题,但不确定它是否相关(也许我错过了一些东西)。

说在 Linux 上一切都是文件意味着:

1 - 与模块和进程的通信正在写入文件:正确吗

2 - 如果正确,这些文件存储在硬盘上?

3 - 如果正确,读/写硬盘是否需要时间?

答案1

一切都可能是文件,但并非一切都是文件真实的

考虑 的内容/proc。在我的Linux系统上,有一个文件/proc/uptime,其当前内容是:

831801.89 1241295.64

如果我再次查看cat该文件,它将包含不同的数字。我的硬盘驱动器是以只读方式安装的,因此不可能出现每隔几分之一秒就将这些数字写入磁盘的情况。事实上,/proc磁盘上没有任何内容。由于procfs.

然后是临时文件。有可能,您的/tmp已安装tmpfs,这意味着它的内容存储在 RAM 中而不是磁盘上。

另一个有趣的地方是/dev/tcp,用于与网络通信。在某些系统上,它甚至只存在于bash其他 shell 下,但不存在,因此它不可能位于这些系统的磁盘上。

这些例子都表明文件系统和硬盘驱动器是分开的,并且“一切都是文件”的理念不会因为I/O速度而影响性能。

答案2

不,我不会说 I/O 方面有惩罚。

也许这个短语过于简单化了。但在内核设备、文件中,一切都可以用文件描述符来引用,并且所有描述符都映射到虚拟文件系统上,就像文件系统一样,人们可以引用特定的文件系统。文件有名称(句柄)。

因此,内核不一定会/proc/vmstat通过磁盘文件系统传递数据,但是您不必执行任何特殊操作来读取统计信息,您可以使用命令读取数据cat

尝试

watch head /proc/vmstat

您会看到数字每个时间间隔都会发生变化。

显然,某些文件具有特殊特征,可能需要比简单的打开/关闭/读/写/查找进行进一步的操作来操作,例如在串行设备上设置波特率是有意义的,但在磁盘上的文件上设置波特率则不然。

相关内容