开启辅助访问 切换到窄版

打印 上一主题 下一主题

为什么说Linux下“一切皆文件”?

[复制链接]
作者:加密的幸福5 
版块:
嵌入式操作系统 linux 发布时间:2021-2-10 01:18:48
12740
楼主
跳转到指定楼层
| 只看该作者 回帖奖励 |倒序浏览 |阅读模式
前言:接触Linux的同志们都听过一句话:“Linux下一切皆文件”。“一切皆是文件”是 Unix/Linux 的基本哲学之一,那么为什么Linux在一切皆文件呢?
0.一切皆文件

首先,在windows中是文件的东西,它们在linux中也是文件,其次一些在windows中不是文件的东西, 比如进程, 磁盘, 也被抽象成了文件.。你可以使用访问文件的方法访问它们获得信息。甚至一些很离谱的东西,比如管道,也是文件。甚至类似于socket(套接字)这样的东西, 使用的接口跟文件接口也是一致的。
这样做最明显的好处是,开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读 socket,读PIPE)的操作都可以用read函数来进行;几乎所有更改(更改文件,更改系统参数,写 socket,写 PIPE)的操作都可以用write函数来进行。
不利之处在于,使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。我们知道,本身Linux具有一个以根目录为树根的文件目录结构,每个设备也同样如此,它们是相互独立的。如果我们想通过Linux上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一,这就是挂载的真正含义。
1.虚拟文件系统VFS
VFS是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统实现的接口。虚拟文件系统(VFS)是物理文件系统与服务之间的一个接口层,它对Linux的每个文件系统的所有细节进行抽象,使得不同的文件系统在Linux核心以及系统中运行的其他进程看来,都是相同的。严格说来,VFS并不是一种实际的文件系统。它只存在于内存中,不存在于任何外存空间。VFS在系统启动时建立,在系统关闭时消亡。(cite from百度百科)

比较晦涩难懂是不是?那么换一种描述:虚拟文件系统使得Linux可以存在多个“实际的文件系统”,比如分区1是ext2,分区2是ext3,分区3是fat32。那么每个“实际的文件系统”的结构和操作方式是不一样的。如果是这样的话用户怎么去操作它们呢?总不能每种不同的文件系统都采用不同的方法吧,那么这个时候就需要VFS作为中间层!用户直接控制VFS,VFS再去控制各个文件系统。
2.VFS存在的意义
可归结为以下四点:

  • 对应用层提供一个标准的文件操作接口;
  • 对文件系统提供一个标准的接口,以便其他操作系统的文件系统可以方便地移植到Linux上;
  • VFS内部则通过一系列高效的管理机制,比如inode cache, dentry cache 以及文件系统的预读等技术,使得底层文件系统不需沉溺到复杂的内核操作,即可获得高性能;
  • 此外VFS把一些复杂的操作尽量抽象到VFS内部,使得底层文件系统实现更简单。
标注
文件系统(一般可以分为以下几类)
网络文件系统,如 nfs、cifs、cdoa、afs等网络文件系统磁盘文件系统,如ext2/ext3/ext4文件系统;特殊文件系统,如 proc、sysfs、ramfs、tmpfs、pipe文件系统等。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表