Linux文件系统初识

一、为啥要认识文件系统

       在学习一个新的知识之前,要么先了解它的作用是什么,或者它的意义是啥,这样才能带着目的去学习,文件系统也是一样的。
       都说Linux系统一切皆文件,可知文件系统的必要性。比如说之前使用 wiringPi 库可以让让我们简单的操作树莓派的IO口和一些外设,但是如果不用 wiringPi 库,我们就需要写一些驱动文件来使用配置IO口,写完之后,就要修改一些文件,让我们写的驱动文件生效,比如把驱动文件放到 /dev目录,在 /etc 配置。如果说没有对Linux的文件系统没有很扎实的认知的话,可能需要很长的时间才能完成。

二、什么是文件系统

       我们第一次使用电脑,应该都是Windows系统,它有非常美观的文件目录。在我们常规的认知中,文件系统指的是就是这些文件目录(根目录),其实这是不正确的想法。百度百科是这样描述文件系统的:
        文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。
       整合一下这句话:文件系统时是操作系统用于明确存储设备组织文件的方法。就是说,文件系统是操作系统上的一个文件管理系统,是操作系统中的一个程序,即文件系统

二、文件系统的种类

       文件系统也有很多中类型:

FAT VFAT  FAT32 NIFS EXT1/2/3/4..... 

我们熟知的 NIFS 是Windows的文件系统,目前我也只见过Window只有一种文件系统,它所有的文件也只按照这种系统的格式存储。
       但是 Linux操作系统不一样,它一个系统内部,有好几种文件系统,可以用 “ df -T ”指令来查看文件系统:
在这里插入图片描述
可以看到,Linux的文件系统有好几种:

文件系统种类说明
tmpfs/devtmpfs基于内存的,存放一些临时文件,比如open之后,close之前的文件,就是放在内存当中
vfat基于磁盘,存放boot相关文件,如:bootloader、kernel
ext4存放根目录文件,比如 /home

三、什么是分区

       对于分区的概念,可能装过Windows的同学会比较熟悉,把一整个磁盘(硬盘)划分成若干个磁盘,就是Windows上的C盘,D盘啥的。如果我们愿意的话,甚至可以分十几个盘,除了系统盘需要管理员权限之外,其他盘我们可以随便地操作里面的文件。
       而Linux默认只有四个分区,如果自己没有创建新的分区的话:

分区名说明
bootloader这是系统的启动代码
para启动代码向内核传递参数的位置
kernel内核分区
根分区文件系统分区

每个分区都按照功能严格地存放文件。

补充

       对于Windows来说,它就像一个驱动器,一个硬盘分区之后,分区里的空间及目录是连续的,就像堆栈的方式一样。但是Linux的文件结构,不一定连续,比如说 /home、/etc、/usr这些目录不一定在一个分区当中甚至可能不在一个文件系统当中。

四、Linux的文件系统目录结构

       目录结构才是真正意义的根目录,它遵循的是LSB(Linux Standard Base)Linux规范/FHS(Filesystem Hierarchy Standard)文件系统规范。
在这里插入图片描述

目录名说明
/bin存放系统指令
/boot存放内核文件
/home开放的目录,即工作目录
/lib存放一些系统库,一些动态库的位置
/lost+found开机找回
/media一般用不到
/mnt挂载目录,外设的挂载就在这个目录,比如USB设备的插入
/proc存放内核的相关文件,内核的一些资源可以在此查看,比如CPU的型号等
/var存放日志的相关文件
/etc存放系统配置文件,比如开机启动等
/dev驱动文件的存放位置,比如串口、IIC、SPI等,还有字符设备的位置也在这

根目录主要就是这些文件。

五、什么是虚拟文件系统 Virtual file system

       虚拟文件系统(vfs)比较抽象,因为虚拟文件系统不存文件,我们看到不到它里面有啥文件,需要通过它的作用来描述。
       在Linux系统中,有多个文件系统,每种文件系统都用自己的格式存放文件,这就导致一个问题出现:用户(开发者)在当前文件系统执行了另一个文件系统的指令的时候,会无法执行该指令,因为当前的文件系统不认识这个指令,这就导致我们进行文件交互的时候会非常麻烦。
       而虚拟文件系统的出现,就解决了这个麻烦,它处于用户和文件系统的中间,给用户和各个文件系统之间提供了一个通用接口,让我们在做开发的时候,不管文件的是磁盘还是设备,都统一用 open、read和write等统一操作。 比如:我们在用open函数的时候,是要先和vfs 进行交互,然后 vfs 再和内核或者设备进行交互,才实现一个open函数。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值