下面呢我们来简单地 介绍两个文件系统的练习 具体的练习的过程呢是希望 大家下面来完成。 我们要把这两个练习的一些 要求呢在这里呢给出来 这是第一个练习 我们可以看一下这是一个树形结构 根,然后 A,B,C 三个子目录 然后 D,E 目录 这里头呢我们可以看到在这个 I 这个目录底下有两个普通的文件 一个是 J,一个是 K,那么在 这些地方我们看到了一个 "...", "..." 呢这里有一定特定的含义 它就表示说在 B 到 C 之间呢可能会有其他的目录 或者是普通文件。 我们来看对这个题目的要求 有这样一个文件系统 它的根目录常驻内存 这就是前面这张图 根目录常驻内存,也就是当系统启动之后,直接把根目录文件读入内存了 那么目录文件 它的物理结构采用的是一个普通的链接结构 我们还规定一个目录底下 最多可以放 50 个下级文件,因为一个目录底下可以是 创建其他的子目录,或者是创建其他的普通文件,所以我们通称为下级文件 每个磁盘块呢可以存放 10 个下级文件的目录项 这里头我们就做了这样一个假设 最多放 10 个下级文件的目录项,如果下级文件 是目录文件,那么 它对应的目录项当中呢可以 得到这个目录文件的第一块的地址 如果下级文件是普通文件 那么对应的这个目录项当中呢 就给出的这个普通文件的 FCB 的地址 这是我们的一个设计 正如刚才所说,那么我这是这棵树 这棵目录树,在这个目录树当中 我们有一个另外的假设,假设 文件是按自左向右的这样一个顺序建立的 也就是说在这棵树当中,A 是在 B 这个目录之前建立的目录 B 呢是在 C 之前,当然 C 之前还有其他的目录 或者是普通文件。 那么 D 后面 这个是 E,那么在 D 和 E 这两个目录之间中间还有一些 目录文件或者是普通文件 我们就省略了,没描述出来,所以我们要求的是说,假设的是说 文件是自左向右的顺序建立,另外一个就是 "..." 表示 有若干内容没有显示,这就是对于这棵树的一个描述 我们的文件系统呢是按这样一个方案设计的 好,那么我们的要求呢是这样的 如果普通文件采用的是三级索引结构,是 UNIX 的三级索引结构 那么 FCB 当中可以找到 13 个磁盘块地址 这 13 个磁盘块地址当中的前 10 个是直接 寻址的磁盘块的,而后面 11,12,13 分别指向一级索引表、 二级索引表和三级索引表 这个时候呢我们要求大家计算 要读这样一个文件,从 A 开始 D,G,I,K,我要把这个 K 这个文件 读它的某一块 问至少要启动磁盘多少次 最多启动磁盘多少次 这是第一问的要求。 第二问呢? 是说如果普通文件采用的是链接结构 我要读 K 这个文件的第 55 块 最少和最多启动磁盘多少次? 那么如果 K 这个普通文件它采用的是一个顺序结构作为物理结构的话 那么要读 K 的第 5555 块的话 最少和最多都启动磁盘多少次呢? 这是我们要大家底下做的一个练习 第二个练习呢是让大家动手画一下 UNIX 或者是 FAT16 文件系统的布局 因为我们已经学过了 UNIX 和 FAT16 文件系统在磁盘上是怎么样 分布的,那么我们给定了一个特定的场景 假设一个磁盘分区大小为 2M 那么每块和每簇大小我们就设定为 512 字节 那么我们格式化好了以后,我们可以在这个 模拟出一个 UNIX 和 Windows、 FAT16 的一个文件系统的一个布局 当格式化了之后我们就是一个文件系统创建了 下面呢就可能会做各种各样的操作 这里头呢我们就假设说在根底下创建了一个目录 A 在 A 目录底下又创建了一个目录 B 在 B 这个目录下呢创建了一个普通文件 File1 那么分配给它四块或者四簇它的 这个大小,然后呢在根底下再创建目录 C D,然后在 C 目录底下又创建了一个子目录呢是 E 在 E 这个子目录底下呢又创建了另外一个文件 File2,这个呢文件呢是占 12 块或者 12 簇 同时在 E 底下又建了一个目录 F 在 F 底下又建立了两个文件 File3、 File4 那么我们能不能 画出来,那么我们以磁盘块为单位 画出若干个磁盘块来,然后把 做完了这些操作之后,整个文件系统的布局画在纸上 大家可以考虑一下这个问题 那么 本讲的重点呢主要是介绍了文件操作的实现流程 那么还介绍了文件管理当中所遇到的几个问题 文件系统的可靠性、 一致性、 写入策略和安全性 本讲的重点呢是 如何提高文件系统的性能,有各种各样的方法 那么我们需要掌握这些方法。 还要理解 FAT 文件系统 是怎么实现的。 本周的教材阅读呢是第 4 章的相关内容 重点呢是这样一些概念 今天这一讲的内容呢 就介绍到这里,谢谢大家!