对目录管理的要求:
(1)实现“按名存取”。即用户只须向系统提供所需访问文件的名字,便能快速准确地找到指定文件在外存上的存储位置。这是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。
(2)提高对目录的检索速度。这是设计一个大、中型系统时所追求的主要目标。
(3)文件共享。
(4)允许文件重名。
一、文件控制块和索引块
1. 文件控制块(Windows类,和FAT匹配)
文件控制块中含有三类信息:
(1)基本信息类:
①文件名,指用于标识一个文件的符号名。
②文件物理位置,指文件在外存上的存储位置,包括存放文件的设备名、文件在外存上的起始盘号、文件所占用的盘块数或字节数。
③文件逻辑结构,指示文件是流式文件还是记录式文件、记录数;文件是定长记录还是边长记录等。
④文件物理结构,指示文件是顺序文件,还是链式文件或索引文件。
(2)存取控制信息类:
文件主的存取权限、核准用户的存取权限以及一般用户的存取权限。
(3)使用信息类:
使用信息类包括: 文件的建立日期和时间、文件上一次修改的日期和时间及当前使用信息(这项信息包括当前已打开该文件的进程数、是否被其它进程锁住、文件在内存中是否已被修改但尚未拷贝到盘上)。
举例:MS-DOS中的文件控制块,含有文件名、文件所在第一个盘块号、文件属性、文件建立日期和时间以及文件长度等。
①文件名:(文件名的第一字节表明该文件的状态)
00H表示空;
E5H表示曾经使用,现已删除;
2EH表示为子目录项。
②属性:(第11字节为文件属性字节,按位规定如下)
③时间:
(第22字节0--4位)以2秒为增量的二进制树
(23字节0--2位)+(22字节5--7位)为分钟
(第23字节3--7位)为小时
④日期:
(第24字节0--4位)为日期1--31
(25字节0位)+(24字节5--7位)为月份1--12
(第25字节1--7位)为年号0--119(1980--2099)
2. 索引节点方式(Unix/Linux类)
(1)索引节点的引入
文件目录存放在磁盘上,当文件数量很多时,文件目录会占用很多盘块。查询目录时,把查放目录的第一个盘块放入内存查询,没有找到查第二个盘块......
发现这样查询的信息太多,因为文件名字和文件的其他信息绑定在一起,查询时只需要知道名字即可,其余信息暂时不需要知道。这样导致查询速度变慢。
解决方法就是把文件名字和其余信息分开。
例如在Unix系统中,使文件描述信息单独形成一个称为索引 结点的数据结构,简称为i结点。在文件目录中的每个目录项仅由文件名 和指向该文件所对应的i结点的指针所构成。
(2)索引节点内容
(1) 文件主标识符,即拥有该文件的个人或小组的标识符。
(2) 文件类型,包括正规文件、目录文件或特别文件。
(3) 文件存取权限,指各类用户对该文件的存取权限。
(4) 文件物理地址,每一个索引结点中含有13个地址项,即 iaddr(0)~iaddr(12),它们以直接或间接方式给出数据文件所在盘块的编号。
(5) 文件长度,指以字节为单位的文件长度。
(6) 文件连接计数,表明在本文件系统中所有指向该(文件的) 文件名的指针计数。
(7) 文件存取时间,指本文件最近被进程存取的时间、最近被修改的时间及索引结点最近被修改的时间。
二、目录结构(多级目录结构)
1. 目录结构
对于大型文件系统,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。
2. 路径名
在树形目录结构中,从根目录到任何数据文件,都只有一条惟一 的通路。在该路径上从树的根(即主目录)开始,把全部目录文件名与数据文件名依次地用“/”连接起来,即构成该数据文件的路径名 (path name)。系统中的每一个文件都有惟一的路径名。
3. 当前目录
含义不解释了。
从当前目录开始直到数据文件为止所构成的路径名,称为相对路径名;
把从树根开始的路径名称为绝对路径名。