文件系统的分层组织结构
(自上而下)
- 逻辑文件系统
- 负责文件系统的逻辑结构(元数据)
- 文件组织系统
- 负责给文本数据分配磁盘块
- 管理空闲磁盘块
- 基本文件系统
- 以磁盘块为单位给文件进行读写
- IO控制
- 有设备驱动程序和中断处理程序。实现内存和磁盘之间的信息传输
一、文件目录管理
1、目录:一个包含文件所有信息的节点的集合,用于组织文件;目录结构和文件都驻留在磁盘上
2、目录的相关操作
- 搜索文件
- 创建文件
- 删除文件
- 遍历目录
- 重命名文件
- 遍历文件系统
3、目录结构
- 单层目录
文件系统为存储设备的所有文件建立一张目录表
- 一个目录对应所有用户
- 命名:不允许有重名文件
- 分组
- 双层目录
将目录分为2级:主目录(MFD)和用户文件目录(UFD)
- MFD = {用户名,用户子目录所在的物理位置}
- UFD = {登记该用户所有文件的FCB}
产生于多用户分时系统,文件主目录和表目按用户分,每个用户有一个用户文件目录。
特点:
- 不同用户可以为文件取相同的名字
- 有效搜索
- 没有分组功能
- 树状结构目录
特点
- 有效的搜索
- 支持分组
- 但概念目录:文件路径名一般较长,而用户总是局部地使用文件。故为了方便起见,可以把经常使用的文件所在目录指定为工作目录(或者当前目录)
- 可以进行存储权限控制
- 无环图目录
- 硬链接
- 符号链接
特点
- 具有共享的子目录和文件
- 文件可能拥有多个绝对路径名(不同文件名指向同一个文件)
二、文件组织系统实现
1、磁盘空间分配
- 连续分配
- 特点
- 简单:只需要记录起始块号&文件长度(块数)
- 可以很方便地支持随机访问
- 缺点
- 存在空间浪费,要求有连续的存储空间
- 文件变长的时候比较难以处理
- 必须事先知道文件的长度,以后不能动态增长(被预留空间、重新分配和移动所掌控)
- 不利于文件插入删除
- 存在外部碎片
- 解决方案:紧凑
- 特点
- 链接分配
- 每个磁盘块中留出一个指针地址,用来进行块链接
- 空间管理:浪费较少
- 缺点:不支持随机访问
- 索引分配
- 文件信息存放在若干不连续的物理块中。系统为每个文件建立一个专用数据结构,索引表,并将这些块号存放在一个索引表中。索引表完成逻辑块号和物理块号的映射。
- 优点:
- 既可以满足文件动态增长的需求,又可以较为方便迅速地实现随机存取(毕竟把逻辑块号和物理块号放一起了,串联他们这个是分散的)
- 缺点:
- 由于使用了索引表而增加了存储空间的开销
- 存取文件的时候至少访问存储器两次以上(一次访问索引表,一次根据索引表提供的物理块号访问文件信息),就很慢。所以可以改进位,对某个文件操作之前系统预先把索引表放到内存里。
- 改进:
- 文件很大索引表也很大——间接索引(多重索引)
2、空闲空间管理
- 空闲文件目录法
- 把一个连续的未分配区域(可能包括若干空闲块)看作一个文件,称为空白文件
- 系统为所有的空白文件建立一个目录,即空白文件目录,每个目录表对应一个空闲文件,记录该空闲文件的起始块号和快熟。
- 空闲块的分配和内存管理里面的可变分区方法相似,同样可以用最先适应,最佳适应,最坏适应。
- 缺点:空闲文件目录是一个连续表,要占用较大的辅存空间
- 空闲块链法
- 按照空闲区大小顺序链接的方法
- 增加或移动 块的时候开销较大
- 按照释放先后顺序链接
- 按成组链接法
- 把文件存储设备中所有空闲块按照50块划分为一组
- 组的划分从后往前一次划分
- 缺点:每次释放物理块时要完成拉链工作,虽然只是在一块中写一个字节,但其工作量和写一块相差无几
- 按照空闲区大小顺序链接的方法
- 位示图法
- 用一个二进制位记载一个物理快的使用情况。系统为每个文件存储设备建立一张位示图。0空闲,1占用。想找N个自由块的话,可以先搜索位示图,找到N个0位,再经过一次简单换算得到对应地址。
- 缺点:分配时需要顺序扫描空闲去(0)速度慢,而且物理块号并未再图中直接反映出来,需要进一步计算。
三、文件系统底层
- 一个磁盘可以分成多个分区,一个分区可以跨多个磁盘
- 一个卷(文件系统)在使用前必须安装;取消安装之后就不能再访问了
- 磁盘调度
- FCFS
- 按照到达顺序移动磁头
- SSTF最短寻道时间有限算法
- 选择与磁头位置最近的待处理请求
- 基本上是一种短作业有线调度,可能会产生饥饿
- SCAN电梯算法
- 磁臂从磁盘一端向另一端移动(方向意味),当磁头移过每一个柱面的时候,处理位于该柱面上的请求服务。当到达另一端的时候,改变方向继续处理。
- C-SCAN提供了一种更均匀的等待时间
- 将磁头从磁盘的一端移到另一端,边移动边处理请求。但是磁头移动到另一端时候马上返回磁盘开始,返回的时候不处理请求。(就是把柱面当作环,最后一个柱面和第一个柱面相连w)
- C-LOOK算法
- 磁头只移动到一个方向上最远请求为止,接着马上返回,而不是移动到磁盘尽头
- FCFS