文件系统
文件系统是操作系统明确文件在储存设备上的组织方法。即怎样组织文件,将其存入储存设备中。
所以不同的组织方式,就有不同的文件系统。如常见的文件系统有FAT、EXT1/2/3、NTFS
分区:
分区是指将硬盘中的一个整体空间划分为多个相互独立的分区,以便管理或提高其效率。
windows中,分区很随意,分为c盘、d盘
linux中,就必须按照功能来分区,每个分区中严格存放文件,有三个分区:boot分区、swap分区、根分区
嵌入式系统可以分为4个分区,分别是:
bootloader:该分区下存放的是和启动代码相关的
para:该分区存放的是启动代码向内核传递的参数
kernel:该分区存放的是内核源码
根分区:这个分区下是和文件系统相关的
linux中,同一个目录下的文件可能来自不同的分区,如在根目录下,/etc和/home来自不同的分区。
windows中,只要分好区,如c盘,这个目录在的文件都是在一个分区中
文件系统通常以磁盘分区划分,每个分区对应一个独立的文件系统。
当某一个磁盘分区(存储设备,可以是不同的文件系统,如U盘是fat)被挂载到文件树中的目录上时,就成为了该文件系统的一个组成部分。
linux目录结构:
虚拟文件系统?
vfs就是对各种文件系统的一个抽象,它为各种文件系统提供了一个通用的接口
作用:简化应用程序员的开发,
不管是什么文件类型,不管文件是磁盘还是设备,都只用open read write统一操作
新的理解:
磁盘中的数据都是由零一零一的二进制数组成,如果没有文件系统的话,磁盘中的数据也能不出来,但是很难知道这些数据的意思。所以文件系统的作用就显现出来了,即将这些数据组织成文件写入磁盘,读取的时候也以文件形式读取。Linux中的文件系统会给每个文件分配两个数据结构:索引节点(index node)和目录项(directory entry),它们都主要是被用来记录文件的元信息和目录层次结构。
- 索引节点,inode,用来记录文件的元信息,比如inode编号、文件大小、访问权限、创建时间、修改时间、数据在磁盘的位置等。索引节点是文件的唯一标识,它们之间一一对应,也同样都是被存储在硬盘当中,索引节点也是会占用磁盘的存储空间的。
- 目录项,dentry,用来记录文件的名字,索引节点指针以及与其他目录项的层级关联关系。多个目录项关联起来,就会形成目录结构,但是它与索引节点不相同的是,目录项是由内核维护的一个数据结构,不是存放咋磁盘中,而是缓存在内存里面。目录项包括文件名和inode节点号。目录也是文件,也是用索引节点唯一标识,和普通文件不同的是,普通文件在磁盘里面保存着的是文件数据,而目录文件在磁盘里面保存子目录或者文件。
如磁盘在分区格式化后(即这块分区的文件系统已经确定了,即写入了一个确定的文件系统,在这块分区上的文件就会以该文件系统的规范来存取),就确定了这块分区数据的组织形式。
如一个u盘的格式是fat格式的,则其中的文件就会以fat要求的形式组织。当将其挂载到linux中时,linux系统会分析出它的文件系统结构,并根据其文件系统类型调用linux中相应的驱动,处理其中的元数据,将这些信息附加到linux的目录树上呈现出来