Linux的文件系统
Q1:什么是文件系统?
A:在学术的角度下,文件系统指“操作系统用于明确存储设备组织文件的方法”,是“文件管理系统”的简称,本质也是代码,一段程序
Q2:文件系统(文件管理系统的方法)的种类有哪些?
A:FAT;NTFS;ext1/2/3/4;HFS......
- 对于Windows可以右击磁盘属性查看文件系统,是NTFS
- 对于Linux,输入“df -T”查看文件系统,是ext4
(tmpfs是内存文件系统)
回忆上节替换内核时挂载U盘时提到的,当树莓派的SD卡挂载到电脑ubuntu虚拟机时:
fat分区是boot相关的内容;ext4是系统的根目录分区
Q3:什么是分区?
A:对于Windows来说,所谓的C/D/E盘,就是分区,用户可以随意的在分区里创建文件;对于Linux来说,分区则有了严格的功能限制,要求按照功能严格的存放文件。
嵌入式系统的分区:
- bootloader分区:存放系统的启动代码
- para分区:存放启动代码向内核传递参数的位置
- kernel分区:存放内核的代码
- 根分区:由“文件系统(目录)结构”存放各种代码
- 对于windows来说:是先将物理地址分开,再在分区上建立目录,所以windows的分区下,同一个目录下的两个文件必然属于同一个分区,分区是连续的。所有路径都是从盘符开始的,比如C盘下的一个文件,它的路径必然是C://开头。
- 对于Linux来说:是先有目录,再将物理地址映射到目录中,所以Linux的分区下,同一个目录下的两个文件可能属于不同的分区,分区是不连续的。在Linux操作系统中,所有路径都是从根目录开始。
Q4:什么是文件系统目录结构?
A:相比于文件系统代表“操作系统用于明确存储设备组织文件的方法”,文件系统目录结构代表“从根目录开始的文件架构 ”:
在Linux系统中:
- 以“.”开头的为隐藏文件
- 路径用“/”来进行分隔(windows中使用“\”来分割)
- 目录被组织成一个树形结构,并从根目录开始,用“/”来表示,并遵循以下的结构:
(对于windows来说,也采用树结构,但是可能存在多个根并列,而盘符就是根,有几个盘符就有几个并列的根)
Q5:什么是虚拟文件系统 “Virtual File System” ?
A:在Linux系统中,不同的文件所属的文件系统可能是不同的,文件A可能是ext4,文件B可能是tmpfs......但是在代码的编写时,使用统一的如open,read,write,cp等函数就可以对不同文件系统下的不同文件进行操作,这就是靠VFS这个中间层实现的:上层的函数接口通过VFS就可以轻松的访问不同的文件系统下的不同文件。VFS就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口。
VFS的作用就是:简化开发的流程,不管属于什么文件系统,不管文件是磁盘还是设备,都可以使用上层的函数接口来进行统一的操作
Linux的内核结构
补充:什么是shell?
shell也是一个应用程序,给用户提供了操纵内核的工具。一个shell对应一个终端(terminal),在终端输入的指令就会直接传递给shell进行解释,然后对内核进行相应的操作。