文件目录
标签: 操作系统
学习人数: 5256

使用文件目录使得文件之间的组织结构清晰,易于查找;编程时也可以很方便地使用文件路径找到一个文件,用户可以很轻松地实现按名存取。

 

1.文件控制块

从文件管理的角度看,文件由文件控制块(File Control Block, FCB) 和文件体两部分组成。文件体即文件本身,而文件控制块(又称为文件说明)则是保存文件属性信息的数据结构,它包含的具体内容因操作系统而异,但至少应包含以下信息:

 

2.索引结点

索引结点是在FCB的基础上进行改进,可以视为进一步地瘦身。因为是记载查找各级目录的过程中只需要用到文件名这个属性,只有文件名匹配的时候,才需要读出文件的其他信息。所以可以考虑对目录表精简后得到索引结点表来提升效率。

存放在磁盘上的索引结点称为磁盘索引结点,UNIX中的每个文件都有一个唯一的磁盘索引结点,主要包括以下几个方面:

文件被打开时,磁盘索引结点复制到内存的索引结点中,以便于使用。在内存索引结点中又增加了以下内容:

 

3.目录结构

首先考虑在目录这个层次上所需要执行的操作:

①单级目录结构

在整个系统只有一张目录表,每个文件占一个目录项。文件名也为目录项的一个属性。单级目录实现了按名存取,但是不允许文件重名。在创建一个文件时,需要先检查目录表中有没有重名文件,确定不重名后才能运行建立文件,并将新文件对应的目录插入目录表中。在删除文件时,系统先从目录表中找到该文件的目录项,从中找到该文件的物理地址,对文件占用的存储空间进行回收,然后再清除它所占用的目录项。但是存在查找速度慢、文件不允许重名、不便于文件共享等缺点,而且对于多用户的操作系统显然是不适用的。

②两级目录结构

早期的多用户操作系统,采用两级目录结构,分为主文件目录(MFD,Master File Directory)和用户文件目录(UFD,User File Directory)。主文件目录记录用户名及相应用户文件目录的存放位置,用户文件目录则是有FCB组成。

两级目录结构允许不同用户的文件重名,也可以通过检查此时登陆的用户名是否匹配得以在目录上实现访问限制,但是两级目录结构依然缺乏灵活性,用户不能对自己的文件进行分类。

③多级目录结构

又称为树形目录结构,不同目录下的文件可以重命名。用户或用户进程要访问某个文件时要用文件路径名标识文件,文件路径名是一个字符串。各级目录之间用“/”隔开。从根目录出发的路径称为绝对路径。系统根据绝对路径一层一层地找到下一级目录。

注意,目录本身就是一个有结构文件,所以其也是存放在外存中,需要的时候获取进入内存。

很多时候,用户会连续访问同一目录内的多个文件。显然,如果每次都从根目录开始查找,是很低效的,所以可以设置一个当前目录。当用户想要访问某个文件时,可以使用从当前目录出发的相对路径。

树形目录结构可以很方便地对文件进行分类,层次结构清晰,也能够有效地进行文件的管理和保护。但是,树形结构不便于实现文件的共享。由此提出了无环图目录结构。

树形目录结构

④无环图目录结构

无环图目录结构实际上就是在树形目录结构的基础上多了指向同一个文件的有向边。树本身就是特殊的图。因为指向了同一个文件,所以就能实现文件的共享了。这种结构在删除文件时会有所不同,不一定是直接删除相应的文件本身,因为它可能还被其他目录所指向,所以借助每个文件的计数器存储指向该文件的目录数,来帮助删除文件操作的实现。每个共享结点设置一个共享计数器,每当图中增加对该结点的共享链时,计数器加1;每当某用户提出删除该结点时,计数器减1。仅当共享计数器为0时,才真正删除该结点,否则仅删除请求用户的共享链。

无环图目录结构

注意共享文件和复制文件是不同的,共享文件中,不同目录指向的是同一个文件,而复制文件则是不同目录指向各自不同的文件。虽然它们内容相同。

 



课后作业


登录后发布评论

暂无评论,来抢沙发