目录
准备: 文件控制块——PCB:
为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称之为“文件控制块”(FCB)
文件与文件控制块一一对应
记录文件名及其存放地址、文件的说明和控制信息。
文件管理程序借助于文件控制块中的信息对文件施以各种操作。
把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个目录项。通常一个文件目录也被看作是一个文件,称为目录文件
一: 目录管理
主要有两大操作:
1.方便信息记录(PCB,目录项)
2.方便检索,管理(目录操作)
管理要求:
(1) 实现按名存取
(2) 提高对目录的检索速度
(3) 文件共享
(4)允许文件重名
(一) PCB内容
1:基本信息类: 文件名,文件物理位置,文件逻辑结构,文件物理结构
2. 存取控制信息 : 文件主的存取权限,其他用户的存取权限。
3. 使用信息类: 建立日期,文件修改日期
当前使用信息:打开文件的进程数,是否被进程上锁,是否已经修改。
(二)索引节点
将文件名,文件具体信息分开,使文件描述信息单独形成一个索引结点。
不同形式:
1:磁盘索引结点:
文件主标识符、文件类型、文件存取权限、文件物理地址、文件长度、文件连接计数、文件存取时间。
2: 内存索引结点:
将磁盘结点拷贝到内存结点使用。新增一些内容,如:状态,访问计数等。
(三) 目录结构、
目录结构的组织
1: 单机目录:
最简单的目录结构。
整个文件系统中只建立一张目录表 ,每个文件一个目录项,含有文件相关信息。
建立一个新文件:
(1)先检索所有的目录项,保证文件名唯一。
(2)获得一张空白目录项,填入相关信息,修改状态位
删除一个文件:
(1) 找到对应的目录项,回收文件所占用空间。
(2) 清楚目录项。
优点:
简单,能够实现目录管理的基本功能————按名存取
缺点:
( 1: 文件检索的时候需要搜索所有目录文件
( 2: 不允许重名,对多用户不友好
(3: 不便实现文件共享,一般只适用于单机环境。
2: 两级目录结构:
为每一个用户建立一个单独的用户文件目录UFD,UFD由所有文件控制块组成。
系统建立一个主文件目录MFD,MFD中每个用户目录文件都占有一个目录项,其中包括用户名和指向UFD的指针
特点:
(1): 提高了检索目录的速度。
(2): 在不同的,目录中可以重名
(3): 不同的用户可以使用相同或不同的文件名来访问系统中的同一个
共享文件,
(4):不提供子目录操作,各个用户之间不方便合作。
3.多级目录结构
使用与较大的文件管理系统,又称树状目录
目录结构:
主目录又称根目录:数据文件成为树叶,其他目录称为结点
路径名;
从根目录到任何数据都有一条唯一的通路
当前目录:
为每个进程设置一个当前目录,又称’工作目录‘;
从当前目录开始,逐级经过中间目录文件,最后到达要访问的数据文件。这一路径上的目录和数据文件连接成的路径名,成为相对路径 。
从根开始的路径名称为绝对路径名。
(四) 目录查询技术
用户法访问一个已存在的文件:
(1):目录调入数据库
(2):按名检索
(3):找到该文件控制块。
(4):读FCB或对应的索引结点
(5):从文件物理地址换算成在磁盘上的物理位置。
1:目录查询方式:线性检索发和哈希法
线性检索法:
单机目录中: 用户提供文件名,顺序查找文件
树形目录:用户提供路径名;对多级目录进行逐级逐层查找。
HASH法:
建立一张hash索引文件目录
系统将用户提供的文件名变换为文件目录的索引值,在利用索引值到目录中查找。
如果文件名使用了通配符,无法利用哈希法。
(五) 文件共享与保护
1:文件共享
多个用户共享一份文件,只保留一份文件副本。
(1)索引结点法:
基本FCB法:
名+详细信息
直接在文件目录中包含文件的物理地址,该方法实现的共享不适用文件动态变化。一个用户对文件的修改(如物理块号增加),对其他用户不可见,共享文件的FCB信息记录同步更新困难。
文件名+索引结点指针。
一个用户修改指针指向地址里的内容,指针不变,其他用户通过指针总能感知索引结点中的最新内容
索引结点中增加count计数
主人删除操作问题:
删,共享用户访问错误;不删,计费问题。
符号链法:
创建一个link类型的文件:“文件名+共享文件路径”(类似快捷方式)
文件主人删除文件,共享者只会出现找不到文件错误。不会发生共享文件删除后出现悬空指针的情况。
该方法适用于网络文件共享,但根据路径检索共享文件的目标位置增加了访问开销,link文件独占索引结点也耗费一定的空间。
无论哪种共享,链接就对应一个文件,如果遍历复制整个目录内的文件,可能会从多条路径对共享文件进行多次访问
2:磁盘容错:
SFT:
(1) 磁盘表面故障
(2)磁盘驱动器、控制器故障