一、目录管理
目录管理的要求如下:
*实现“按名存取”;(最基本功能)
*提高对目录的检索速度;
*文件共享;
*允许文件重名。
-
文件控制块—FCB
为文件设置用于描述和控制文件的数据结构
==》作用:
△文件与文件控制块一一对应
△记录文件名及其存放地址、文件的说明和控制信息。(是谁?在哪里?什么权?)
△文件管理程序借助于文件控制块中的信息对文件施以各种操作。
==》把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个目录项。
FCB内容:
①基本信息类
包括文件名,文件物理位置,文件逻辑结构(流式,记录式),文件的物理结构。
===》文件物理位置:
②存取控制信息类
包括文件主的存取权限,核准用户的存取权限和一般用户的存取权限。
③使用信息类
建立日期和时间、文件上次修改的日期和时间
当前使用信息:打开该文件的进程数、是否被进程锁住、是否已修改等。
===》》》如何加快目录检索?
采用目录项分解法:即把FCB分成两部分,
符号目录项:文件名,文件号,
基本目录项:除文件名外的所有字段 -
索引结点
①索引结点的引入目的
△文件目录占越大量的盘块,需进行的磁盘读写开销越大。减少实际检索的信息量就减少移动磁头的开销,提高速度;
△目录一般是按名检索。而直到找到正确文件前,只关心文件名,不需要其它的文件描述信息,目录中这部分内容的调入不是必须的。
△所以:将文件名、文件具体信息分开,使文件描述信息单独形成一个索引结点。
②文件放在外存,文件信息形成FCB,FCB的集合构成目录
③访问一个文件时需要把目录调入内存,然后按名检索目录,
△目录占用内存空间问题产生
△按名检索时,名字不符的话其他信息并不需要读取,所以FCB中许多信息不需要全调入内存。
△减小FCB:将文件的详细信息放入索引结点,FCB中记录文件名和inode地址。目录小了,调入内存占空就少,检索也快了。==》索引结点由外存到内存的过程中有不同的形式:
①磁盘索引结点
存放在磁盘上的索引结点。主要包括以下内容:文件主标识符、文件类型、文件存取权限、文件物理地址、文件长度、文件连接计数、文件存取时间
②内存索引结点
文件被打开后,将磁盘索引结点拷贝到内存索引结点中以便使用。比磁盘索引结点增加了以下内容:索引结点编号、状态、访问计数、文件所属文件系统的逻辑设备号、链接指针 -
目录结构
△目录结构的组织,关系到文件系统的存取速度,也关系到文件的共享性和安全性。
△组织好文件的目录,是设计好文件系统的重要环节。
△目前常用的目录结构形式有:①单级目录结构(Single-Level Directory)
最简单的目录结构。
整个文件系统中只建立一张目录表,每个文件一个目录项,含有文件相关信息。
==》每建立一个新文件:
△先检索所有的目录项,保证文件名唯一。
△获得一空白目录项,填入相关信息,修改状态位(表明每个目录项是否空闲)。
==》删除一个文件:
△找到对应目录项,回收文件所占用空间
△清除目录项优点:简单、能实现目录管理的基本功能——按名存取。
缺点:
△文件检索时需搜遍整个目录文件,范围大速度慢。
△不允许重名。名字过多难于记忆,对于多用户环境重名难以避免。
△不便于实现文件共享(因为不能重名,不同用户使用的共享文件必须不同名字,标识哪些用户共享文件也不方便),一般只适用单机环境②两级目录结构( Two-Level Directory )
△为每一个用户建立一个单独的用户文件目录UFD,UFD由用户所有文件的文件控制块组成。
△系统建立一个主文件目录MFD, MFD中每个用户目录文件都占有一个目录项,其中包括用户名和指向UFD的指针。
△优点:
*提高了检索目录的速度。
*在不同的目录中可重名。
*不同用户还可以使用相同/不同的文件名来访问系统中的同一个共享文件。
△缺点:
不提供子目录操作,还不方便;各用户之间被完全隔离的话用户访问其他用户文件时,不方便合作③多级目录结构(树状目录(tree-like))
△适用于较大的文件系统管理
△在文件数目较多时,便于系统和用户将文件分散管理
△优点:层次结构更清晰、提供更灵活的权限管理等
△缺点:目录级别太多时也会增加路径检索层次,增加磁盘访问时间④目录查询技术
△用户要访问一个已存文件
*目录数据调入内存
*按名检索:系统利用提供的文件名对目录(根据目录层次,需要做的检索次数也不同)进行查询
*找该文件控制块
*读FCB或对应索引结点
*从文件物理地址换算出文件在磁盘上的物理位置
*最后通过磁盘驱动程序,将所需文件读入内存
△目录查询方式:线性检索法和Hash方法
综合练习
二、文件共享与保护
- 文件共享
共享范围:单机系统/多主机系统/网络范围
共享方式:
①索引结点法
②符号链法
==》两种共享方式的比较
△硬链接(基于索引节点):
*只能文件链接,不能对目录做硬链接(可能导致du类命令死循环遍历);
*只能在同一个文件系统范围内进行,不能跨文件系统。
*删除文件时,如果还有其他链接链至该文件,则该文件不能被删除。
△软链接(符号链接):
*虽然实现起来相对麻烦一些,访问速度相对慢一些,但适用范围和灵活性要大一些。
*允许目录链接,允许不同文件系统间进行链接,这两个文件系统可以在同一个计算机上,也可以在不同的计算机上。
*被链接文件的删除和符号链接的删除是完全相互独立的(返回“被链接文件不存在”的错误)。