引言
由于内存是易失的,断电就会丢失,所以需要文件来保存数据。而文件系统就是用于管理操作系统中的文件。
这篇文章是写得最懵的...知识点都比较杂乱,可能逻辑性没有组织的特别好。
见谅呀(>﹏<)
文章导读
- 文件和文件系统相关概念
- 文件别名与文件系统类别
- 文件分配(连续分配,链式分配,索引分配)
- 提高I/O速度的方法(高速缓存,提前读,延迟写,优化物理块分布,虚拟盘,RAID)
- 磁盘调度算法(FCFS,SSTF,SCAN系列)
一、文件和文件系统相关概念
文件系统:一种用于持久性存储的系统抽象。
文件:系统中一个单元的相关数据在操作系统中的抽象。
文件系统的功能
1.分配文件磁盘空间
管理文件块;管理空闲空间;分配算法。
2.管理文件集合
定位文件及其内容;命名(通过名字找到文件的接口);最常见的是分层文件系统。
3.提供便利及特征
保护数据安全 ;保持文件的持久即使发生崩溃,媒体错误攻击,也要减少数据的丢失等。
文件头
文件头存储文件的元数据信息,属性以及跟踪哪一块存储块属于逻辑上文件结构的哪个偏移。
文件描述符
文件描述符用于内核跟踪每个进程打开的文件,操作系统为每个进程维护一个打开文件表,一个打开文件描述符就是这个表中的索引。C语言中的open()函数返回的就是一个文件描述符。
对于一个文件,需要许多的元数据来对其进行管理。其中包括:
- 文件指针:指向最近一次读写位置,每个打开了这个文件的进程都是这个指针。
- 文件打开计数:记录文件打开的次数,当最后一个进程关闭了文件时,允许将其从打开文件表中移除。
- 文件磁盘位置:缓存访问信息。
- 访问权限:每个程序访问模式信息。
如果将所有文件进行线性的显示,则显得杂乱无章,所以需要目录来组织文件。下面看看目录相关的概念。
目录
文件是以目录的方式组织起来,目录也是一类特殊的文件。值得注意的是,操作系统只允许内核状态下修改目录,以确保映射的完整性。
根据目录找到对应文件的过程叫做名字解析。是将逻辑名字转换成物理资源的过程,遍历文件目录直到找到目标文件。
二、文件别名与文件系统类别
2.1 文件别名
文件别名可分为软链接和硬链接。软链接是以“快捷方式”指向其他文件,通过存储文件的逻辑名称来实现;而硬链接是多个文件项指向一个文件。后续会讲,多个硬链接文件对应一个inode,当这个inode改变时,硬链接文件中的内容也会同步。
2.2 文件系统的类别
文件系统主要分为磁盘文件系统(文件存储在数据存储设备上),数据库文件系统(文件根据其特征是可被寻址的),日志文件系统(记录文件系统的修改/事件),网络/分布式文件系统,特殊/虚拟文件系统。下面主要说虚拟文件系统。
2.2.1 虚拟文件系统
虚拟文件系统是对所有不同文件系统的一层抽象,通过虚拟文件系统来屏蔽底层文件系统的差异。
<