简介
为了方便用户的使用,对于一些当前需要使用的系统文件和用户文件,都必须放在可随机存取的磁盘上。在多用户环境下,若由用户自己对文件的存储进行管理,不仅非常困难,而且也必然是十分低效的。因而,需要由文件系统对诸多文件及文件的存储空间实施统一的管理。其主要任务是为每个文件分配必要的外存空间,提高外存的利用率,并能有助于提高文件系统的存、取速度。
文件目录管理程序是操作系统中用于检索、管理和存取目录的程序。主要目的有:为了使用户能方便地在外存上找到自己所需的文件;为每个文件建立其目录项,并对众多的目录项加以有效的组织,以实现方便的按名存取,即用户只须提供文件名便可对该文件进行存取。目录管理还应能实现文件共享,这样,只须在外存上保留一份该共享文件的副本。此外,还应能提供快速的目录查询手段,以提高对文件的检索速度。1
目录管理为了能有效地管理大量文件,必须对它们加以妥善的组织。这主要依赖于文件目录来实现。或者说,文件目录具有将文件名转换为该文件在外存的物理位置的功能,这也正是文件目录提供的最基本的功能。对文件目录的管理有以下要求:
(1) 实现“按名存取” ,即用户只须向系统提供所需访问文件的名字,便能快速准确地找到指定文件在外存上的存储位置。这是目录管理中最基本的功能,也是文件系统向用户提供的最基本的服务。
(2) 提高对目录的检索速度。通过合理地组织目录结构的方法,可加快对目录的检索速度,从而提高对文件的存取速度。这是在设计一个大、中型文件系统时所追求的主要目标。
(3) 文件共享。在多用户系统中,应允许多个用户共享一个文件。这样就须在外存中只保留一份该文件的副本,供不同用户使用,以节省大量的存储空间,并方便用户和提高文件利用率。
(4) 允许文件重名。系统应允许不同用户对不同文件采用相同的名字,以便于用户按照自己的习惯给文件命名和使用文件。
目录结构目录结构的组织,关系到文件系统的存取速度,也关系到文件的共享性和安全性。因此,组织好文件的目录,是设计好文件系统的重要环节。目前常用的目录结构形式有单级目录、两级目录和多级目录。
单级目录结构这是最简单的目录结构。在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名、文件扩展名、文件长度、文件类型、文件物理地址以及其它文件属性。此外,为表明每个目录项是否空闲,又设置了一个状态位。
单级目录的优点是简单且能实现目录管理的基本功能——按名存取,但却存在下述一些缺点:
(1) 查找速度慢。对于稍具规模的文件系统,会拥有数目可观的目录项,致使为找到一个指定的目录项要花费较多的时间。对于一个具有 N 个目录项的单级目录,为检索出一个目录项,平均需查找 N/2 个目录项。
(2) 不允许重名。在一个目录表中的所有文件,都不能与另一个文件有相同的名字。然而,重名问题在多道程序环境下却又是难以避免的;即使在单用户环境下,当文件数超过数百个时,也难于记忆。
(3) 不便于实现文件共享。通常,每个用户都有自己的名字空间或命名习惯。因此,应当允许不同用户使用不同的文件名来访问同一个文件。然而,单级目录却要求所有用户都用同一个名字来访问同一文件。简言之,单级目录只能满足对目录管理的四点要求中的第一点, 因而,它只能适用于单用户环境。
两级目录结构为了克服单级目录结构的缺点,可为每用户建立一个单独的用户文件目录UFD(User FileDirectory),它由用户所有文件的文件控制块组成。再在系统中建立一个主文件目录MFD(Master File Directory);在主文件目录中,每个用户文件目录都占有一个目录项;其目录项中包括用户名和指向 该用户目录文件的指针。
两级目录结构基本上克服了单级目录的缺点,并具有以下优点:提高了检索目录的速度;在不同的用户目录中,可使用相同的文件名,只 要在用户自己的UFD中其文件名都是唯一的;不同用户可使用不同文件名来访问系统中的同一个共享文件。1
多级目录结构对于大型文件系统,通常采用三级或三级以上的目录结构,以提高对目录的检索速度和文件系统的性能。多级目录结构又称为树型目录结构,主目录在这里被称为根目录,把数据文件称为树叶,其它的目录均作为树的结点。树型目录具有检索效率高、允许重名、便于实现文件共享等一系列优点。主目录在树型目录结构中,作为树的根结点,称为根结点。数据文件作为树叶,其它所有目录均作为树的结点。