文件系统实现
文件系统结构
为了对磁盘进行高效便捷的访问,所以要使用文件系统
文件系统由许多层构成,每一层都为上面一层提供服务
分层结构
- 应用程序
- 逻辑文件系统
- 管理元数据
- 包括文件系统的所有结构数据
- 不包括实际数据
- 通过文件控制块维护文件结构
- 文件控制块包含文件的信息
- 也负责保护安全
- 管理元数据
- 文件组织系统
- 知道文件及其逻辑块和物理块
- 可以将文件逻辑地址转换为基本文件系统的物理块地址
- 基本文件系统
- 基本文件系统向设备驱动程序发送命令即可对物理块进行读写
- I/O系统
- I/O控制为最底层,由设备驱动程序和中断处理程序组成
- 设备
分层可以减少重复的代码
文件系统实现
概述
- 一些重要的结构
- 引导控制块
- 引导操作系统所需要的信息
- 没有操作系统就为空
- 一般为第一块
- 引导操作系统所需要的信息
- 卷控制块
- 包含卷的详细信息
- 分区的块数
- 块的大小
- 空闲块的数量和指针
- 空闲FCN的数量
- 包含卷的详细信息
- 目录结构
- 用于组织文件
- FCB
- 文件控制块
- 应包含有那些
- 文件权限
- 文件日期数据
- 子主题 3
- 文件所有者
- 文件大小
- 文件数据块指针
- UFS
- 引导块
- 安装表
- 安装卷的信息
- 目录结构缓存
- 最近访问过的目录信息
- 引导控制块
- 造作系统调用文件组织模块将目录I/O映射成为磁盘块的号,仅为传递给基本文件系统和I/O控制系统
- 打开文件表
- 文件打开后,完成FCB的定位之后就会使用另一个索引操作文件,文件句柄,打开后所有文件操作都是对打开文件表进行的
- 关闭文件吉安,删除打开文件表的条目
分区与安装
- 磁盘可以分区,多个磁盘也可以合称为一个卷
- 生磁盘和熟磁盘
- 有无安装文件系统
- 引导信息
- 作为镜像读入内存
- 引导操作系统启动
- 根分区
- 存储操作系统内核和其他系统文件
- 在引导时装入内存
虚拟文件系统
- 文件系统接口
- 提供一些具体的方法
- VFS接口
- 定义一个VFS接口
- 提供在网络上唯一标识一个文件的机制
- VPS可以区分本地文件或者远程文件
- 因此,VPS可以根据文件系统类型调用特定文件类型操作 处理本地请求
- 文件系统
目录实现
线性列表
- 存储文件名和数据块指针的线性列表
哈希表
- 使用哈希表的结构
- 冲突
- 两个文件哈希到同一个位置
分配方法
连续分配
- 每个文件在磁盘中都有一块连续的块
- 好处
- 访问连续的文件很方便
- 坏处
- 很难为新文件找到存储空间
- 类比动态存储分配问题
- 可能出现内部外部碎片
- 分配拓展空间
链接分配
- 每个文件都是磁盘块的链表
- 维护一个目录,存储文件的起始与结束
- 只能有效的应用于文件的顺序访问
- 多块成簇
- 按簇分配
- 多块成簇
- 文件分配表
- 每个卷的开始部分存储FAT
- FAT中存储每个块的下一个块
- 支持了直接访问
- 每个卷的开始部分存储FAT
索引分配
- 把所有的指针放在一起,通过索引块完成直接访问
- 索引块
- 链接方案
- 多层索引
- 组合方案
性能
空闲空间管理
位向量
- 保存一个空闲位图
- 优点
- 查找第一个和连续N个空闲块较方便
链表
- 构造空闲块的链表
组
- 将许多空闲块的地址存在第一个空闲块中
计数
- 记录第一块的地址和紧挨第一块的连续空闲块的数目
效率与性能
效率
性能
恢复
备份
- 完全备份
- 增量备份
XMind: ZEN - Trial Version
网友评论