为什么linux建的文件只能读,为什么说Linux下“一切皆文件”?

b1a772e82c097a48ae1f79dbd50b21f9.png复制:ManjaroLinux

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

0.一切皆文件

27129efeb1a4d82df633566355c2a712.png

首先,在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百度百科)

c329e2436664dbc9119766ca1f6fd966.png

比较晦涩难懂是不是?那么换一种描述:虚拟文件系统使得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文件系统等。

举报/反馈

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值