一、目录管理
1.对文件实施有效的管理,必须对它们加以妥善组织,
主要是两大操作:
- 基本信息记录(FCB,目录项)
- 方便检索、管理(目录操作)
2.FCB内容
1)在文件控制块中,通常含有以下三类信息。
a.基本信息类
包括文件名,文件物理位置,文件逻辑结构,文件的物理结构。
b.存取控制信息类
c.使用信息类
2)文件物理位置
- 对于连续文件:文件起始块号;
- 对于链接文件:指向第一个物理块的指针;
- 对于索引文件:索引表地址。
3.索引结点
1)索引结点的引入
- 文件目录占越大量的盘块,需进行的磁盘读写开销越大。减少实际检索的信息量就减少移动磁头的开销,提高速度;
- 目录一般是按名检索。而直到找到正确文件前,只关心文件名,不需要其它的文件描述信息,目录中这部分内容的调入不是必须的。
- 所以:将文件名、文件具体信息分开,使文件描述信息单独形成一个索引结点。
2)
3.目录结构
1)目前常用的目录结构形式有
- 单级目录
- 两级目录
- 多级目录
2)单级目录结构
a.每建立一个新文件:
- 先检索所有的目录项,保证文件名唯一。
- 获得一空白目录项,填入相关信息,修改状态位(表明每个目录项是否空闲)。
b.删除一个文件:
- 找到对应目录项,回收文件所占用空间
- 清除目录项
优点:简单、能实现目录管理的基本功能——按名存取。
缺点:
- 文件检索时需搜遍整个目录文件,范围大速度慢。
- 不允许重名。名字过多难于记忆,对于多用户环境重名难以避免。
- 不便于实现文件共享(因为不能重名,不同用户使用的共享文件必须不同名字,标识哪些用户共享文件也不方便),一般只适用单机环境。
3)两级目录结构
- 为每一个用户建立一个单独的用户文件目录UFD,UFD由用户所有文件的文件控制块组成。
- 系统建立一个主文件目录MFD, MFD中每个用户目录文件都占有一个目录项,其中包括用户名和指向UFD的指针。
两级目录的特点:
- 提高了检索目录的速度。
- 在不同的目录中可重名。
- 不同用户还可以使用相同/不同的文件名来访问系统中的同一个共享文件。
4)多级目录结构
- 适用于较大的文件系统管理。又称为树状目录(tree-like)
- 在文件数目较多时,便于系统和用户将文件分散管理。
4.目录查询技术
1)用户要访问一个已存文件
- 目录数据调入内存;
- 按名检索:系统利用提供的文件名对目录(根据目录层次,需要做的检索次数也不同)进行查询
- 找该文件控制块
- 读FCB或对应索引结点;
- 从文件物理地址换算出文件在磁盘上的物理位置;
- 最后通过磁盘驱动程序,将所需文件读入内存。
2)目录查询方式:线性检索法和Hash方法。
a.线 性检索法 又称为顺序检索法。
- 单级目录中 用户提供文件名,顺序查找文件目录。
- 树型目录中 用户提供路径名,如/user/ast/mbox
- 对多级目录进行逐层查找。
二、文件共享与保护
1.文件共享方式
- 索引结点
- 符号链
2.索引结点法
a.基本FCB法:
- 名+详细信息。
- 直接在文件目录中包含文件的物理地址,该方法实现的共享不适用文件动态变化。一个用户对文件的修改(如物理块号增加),对其他用户不可见,共享文件的FCB信息记录同步更新困难。
b.文件名+索引结点指针。
- 一个用户修改指针指向地址里的内容,指针不变,其他用户通过指针总能感知索引结点中的最新内容
- 索引结点中增加count计数
- 主人删除操作问题:
删,共享用户访问错误;不删,计费问题。
3.符号链法
- 创建一个link类型的文件:“文件名+共享文件路径”(类似快捷方式)
- 文件主人删除文件,共享者只会出现找不到文件错误。不会发生共享文件删除后出现悬空指针的情况。
- 该方法适用于网络文件共享,但根据路径检索共享文件的目标位置增加了访问开销,link文件独占索引结点也耗费一定的空间。
4.磁盘容 错:防止磁盘故障造成的文件不安全
1)SFT I:磁盘表面故障
- 双目录、双文件分配表(空间冗余)
- 写后读校验、热修复重定向(时间操作冗余)
2)SFT II:磁盘驱动器、控制器故障
- 驱动器故障:磁盘镜像
- 控制器故障:磁盘双工——并行控制器,分离搜索加快读取
3)SFT III:高级容错技术
- 双机热备份
- 双机互备份
- 公用磁盘模式
三、重点知识理解
1.存放在磁盘上的文件访问顺序如何:既可随机访问,又可顺序访问。
2.操作系统中对信息进行管理的部分叫:文件系统
3.文件系统是:文件、管理文件的软件及数据结构的总体。
4.从用户角度看,文件系统的主要目的是:实现对文件的按名存取。
5.按文件的逻辑结构将文件分为两大类:记录式文件和流式文件。
6.使用位示图(20行、30列)表示空闲盘块状态。当分配的盘块号为132号时,其在位示图中的行、列数为(行为0-19、列为0-29,首盘块号为1) 4、11。当释放的盘块号为318时,其在位示图中的行、列数为:
B=i*30+j+1; b-1=i*30+j
i=b-1 div 30=10;mod= j=17
7.为了解决不同用户的文件“命名冲突”问题,通常在文件系统中采用:多级目录结构。