美文网首页转载部分
为什么说Linux下“一切皆文件”?

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

作者: manjarolinux | 来源:发表于2021-02-07 07:10 被阅读0次

前言:接触Linux的同志们都听过一句话:“Linux下一切皆文件”。“一切皆是文件”是 Unix/Linux 的基本哲学之一,那么为什么Linux在一切皆文件呢?

0.一切皆文件

首先,在windows中是文件的东西,它们在linux中也是文件,其次一些在windows中不是文件的东西, 比如进程, 磁盘, 也被抽象成了文件.。你可以使用访问文件的方法访问它们获得信息。甚至一些很离谱的东西,比如管道,也是文件。甚至类似于socket(套接字)这样的东西, 使用的接口跟文件接口也是一致的。

这样做最明显的好处是,开发者仅需要使用一套 API 和开发工具即可调取 Linux 系统中绝大部分的资源。举个简单的例子,Linux 中几乎所有读(读文件,读系统状态,读 socket,读PIPE)的操作都可以用read函数来进行;几乎所有更改(更改文件,更改系统参数,写 socket,写 PIPE)的操作都可以用write函数来进行。

不利之处在于,使用任何硬件设备都必须与根目录下某一目录执行挂载操作,否则无法使用。我们知道,本身Linux具有一个以根目录为树根的文件目录结构,每个设备也同样如此,它们是相互独立的。如果我们想通过Linux上的根目录找到设备文件的目录结构,就必须将这两个文件系统目录合二为一,这就是挂载的真正含义。

1.虚拟文件系统VFS

VFS是一种用于网络环境的分布式文件系统,是允许和操作系统使用不同的文件系统<1>实现的接口。虚拟文件系统(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内部,使得底层文件系统实现更简单。

标注

<1>文件系统(一般可以分为以下几类)

网络文件系统,如 nfs、cifs、cdoa、afs等网络文件系统

磁盘文件系统,如ext2/ext3/ext4文件系统;

特殊文件系统,如 proc、sysfs、ramfs、tmpfs、pipe文件系统等。

相关文章

  • Linux各目录含义

    linux下“一切皆文件”,理解linux下各个目录甚至文件的含义,对于加深对linux的了解和linux编程都有...

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

    前言:接触Linux的同志们都听过一句话:“Linux下一切皆文件”。“一切皆是文件”是 Unix/Linux 的...

  • 理解文件描述符

    前言 何为文件? Linux 下,一切皆文件 在Linux操作系统中,可以将一切都看作是文件,包括普通文件,目录文...

  • 【fd】Linux文件描述符

    在Linux下一切资源皆文件,普通文件是文件,磁盘打印机是文件,socket 当然也是文件。 关于Linux下系统...

  • Linux学习笔记(一)---Linux文件和目录

    一. Linux文件和目录 一切皆文件 Linux 中所有内容都是以文件的形式保存和管理的,即一切皆文件,普通文件...

  • linux设备驱动程序

    linux中一切皆文件

  • 03-Linux 文件管理系统

    3.1 Linux 文件 Linux 系统中一切皆文件 3.2 Linux 目录结构 3.3 Linux 目录结构...

  • find命令

    linux一切皆文件,因此文件查找还是比较重要的 linux下查找命令有两个 locatefind locatel...

  • linux命令行学习(5):操作文件与目录

    本文介绍复制文件、移动文件、创建目录、删除文件的命令。 注意linux中一切皆文件,所以,这里说的文件,当然也包括...

  • Linux文件系统详解(转载)

    Linux一切皆文件 Linux 中的各种事物比如像文档、目录(Mac OS X 和 Windows 系统下称之为...

网友评论

    本文标题:为什么说Linux下“一切皆文件”?

    本文链接:https://www.haomeiwen.com/subject/sunntltx.html