1.07k likes | 1.17k Views
第五章 文件系统. 计算机系统中涉及的另一类资源是软件资源。这包括系统和用户的各种程序和数据。这些程序和数据存放在不同的存储介质中,用户和系统要频繁地对它们进行访问,如何能安全可靠地存储信息,又让每个用户能方便地存取这些信息呢? 这正是文件系统要实现的功能。 对文件系统的 三个基本要求: 能够存储大量的信息 长期保存信息 可以共享信息 下面分几部分介绍文件系统所涉及的内容。. 5 . 1 文件和文件系统. 一、 文件
E N D
计算机系统中涉及的另一类资源是软件资源。这包括系统和用户的各种程序和数据。这些程序和数据存放在不同的存储介质中,用户和系统要频繁地对它们进行访问,如何能安全可靠地存储信息,又让每个用户能方便地存取这些信息呢? 这正是文件系统要实现的功能。 对文件系统的三个基本要求: 能够存储大量的信息 长期保存信息 可以共享信息 • 下面分几部分介绍文件系统所涉及的内容。
5.1 文件和文件系统 • 一、 文件 • 文件是具有符号名的相关信息的集合。文件可以表示范围很广的对象,一个源程序、一批数据、各种语言的编译程序,各种编辑程序,银行的各个帐目,公司的记录等都可以各自构成一个文件。 • 文件具有三个基本特征: • (1)文件的内容为一组信息;
(2)文件具有保存性,它可以被放在磁盘、磁带、光盘等存储介质上,且可以被长期保存和多次使用。(2)文件具有保存性,它可以被放在磁盘、磁带、光盘等存储介质上,且可以被长期保存和多次使用。 • (3)文件可按名存取,每个文件都有唯一的标识符。可以通过这个标识符来存取文件中的信息,而无须了解文件在存储介质上的具体位置。 • 二、文件的分类 • 文件可以进行多种方面的分类。 • 按用途分:有系统文件,库文件,应用程序文件和用户文件;
文件按保护方式分:有只读文件,读写文件;无保护的文件;文件按保护方式分:有只读文件,读写文件;无保护的文件; 按信息保存期限分类 临时文件;永久文件;档案文件 按外件所在的设备类分:有硬盘文件,软盘文件,磁带文件和光盘文件等。 • 在UNIX系统中,文件按其组织和处理方式也分为三类: • (1) 普通文件 这种文件既包括系统文件、应用程序文件、库文件,也包括用户的各种文件。
(2) 目录文件 这是由文件目录构成的一类文件。目录文件是用来维护文件系统结构的文件。通过目录文件,系统可以检索普通文件。由于目录文件也是由字符序列组成,因此对它的处理(包括读、写和执行)与普通文件相同。 • (3) 特别文件 它们是系统中所有的输入、输出和外部存储型设备。把输入、输出设备(如终端、打印机等)叫做字符型特别文件,而把外部存储型的设备(如磁带、磁盘、光盘等)叫字符块特别文件。
文件分类的目的:对不同文件进行管理,提高系统效率;提供用户界面友好性文件分类的目的:对不同文件进行管理,提高系统效率;提供用户界面友好性 • 文件的命名规则随着系统的不同而异,但几乎所有的操作系统允许用1~8个字符作为合法的文件名。现代操作系统都允许文件名最长255个字符。如UNIX、LINUX和WINDOWS NT/2000等。有些文件系统的文件名区分大、小写字母,如UNIX系统等;有的则不加区分,如MS-DOS等。
二、 文件系统 • 文件系统既包括操作系统中用于文件管理的那些程序,也包括了运行这些程序所需的各种数据结构。 • 一个理想的文件系统应具备以下功能: • (1) 管理磁盘、磁带等组成的文件存贮器。记录哪些空间被占用,哪些空间空闲。以便用户创建文件时,为其分配空闲空间。修改或删除文件时,调整或收回相应空间。
(2)实现用户的按名存取。名字空间到存储空间的映射 • (3) 为了便于用户存贮和加工处理信息,应具有灵活多样的文件结构和存取方法。 • (4) 向用户提供一套使用方便、简单的操作命令。 • (5) 保证文件信息的安全性。 • (6) 便于文件的共享。
由此可见,引入文件和文件系统之后,用户就可以用统一的观点看待各种文件存贮介质上的信息。用户所要知道的只是文件名和文件的特征信息,如文件建立日期,允许的访问权限等。至于文件在外存空间的分配和文件存放的物理位置等一些物理操作均由系统自动实现。由此可见,引入文件和文件系统之后,用户就可以用统一的观点看待各种文件存贮介质上的信息。用户所要知道的只是文件名和文件的特征信息,如文件建立日期,允许的访问权限等。至于文件在外存空间的分配和文件存放的物理位置等一些物理操作均由系统自动实现。
5.2 文件的结构和存取方法 • 文件结构是指文件的组织形式。文件系统的设计者一般从两种不同的观点去研究文件的结构。一种是从用户使用角度去研究。研究用户如何组织和使用文件,其目的是为用户提供一种逻辑结构清晰,使用简便的逻辑文件结构。用户将按照这种形式去存贮、检索和使用文件的信息;另一种是从系统实现的角度去研究。研究存放在存贮介质上的实际文件,即物理文件的组织,以提高系统利用效率。
文件系统的重要作用之一就是在用户逻辑文件和相应的存贮设备上的物理文件之间建立映射,实现二者之间的相互转换。文件系统的重要作用之一就是在用户逻辑文件和相应的存贮设备上的物理文件之间建立映射,实现二者之间的相互转换。 • 一、 文件的逻辑结构 • 文件的逻辑结构通常分为两种形式。一种是无结构的字节流,即字符流式文件,另一种是有结构的记录式文件。如书上的图5.1所示。
一个字节 一条记录 图5.1 字节流 记录序列 树
无结构的字符流文件是由先后到达的相关字节组成,文件内的信息不再划分结构。如各种程序、文本文件等。其文件长度就是它包含的字节个数。无结构的字符流文件是由先后到达的相关字节组成,文件内的信息不再划分结构。如各种程序、文本文件等。其文件长度就是它包含的字节个数。 • 记录式文件则是由若干个记录组成。所谓记录,则是一些相关联的信息项。记录又分为定长的和变长的两种。并按照记录出现的逻辑顺序进行编号,记为记录0,记录1,…。对于定长记录的文件,其文件长度等于记录个数乘以记录长度;对于变长记录文件,其长度等于各记录长度之和。 • 一个记录由若干字段构成,各字段组成一个有意义的单位。
事实上,操作系统不了解也不关心文件的内容,它所“看到的”都是字节流。文件信息的实际意义是由用户级程序强加和关心的。UNIX系统和MS-DOS系统就是以无结构的字符流形式组织文件和处理文件的。事实上,操作系统不了解也不关心文件的内容,它所“看到的”都是字节流。文件信息的实际意义是由用户级程序强加和关心的。UNIX系统和MS-DOS系统就是以无结构的字符流形式组织文件和处理文件的。 • 二、文件的存取方法 • 文件的存取方法是由文件的性质和用户使用文件的情况决定的。也就是说,用户以什么方式对文件中的信息进行定位存取。通常,根据对文件信息的存取次序不同,把文件的存取方法分为如下几类:
1、顺序存取 • 无论是无结构的字符流文件,还是有结构的记录式文件,对文件的存取都是后一次存取总是在前一次存取的基础上进行的。为此, 系统设置两个位置指针指向其中要读写的字节位置或记录位置。根据要读写的字节个数或记录长度,系统自动修改指针位置。由此可见,顺序存取就是严格按照字符流或记录排列的先后次序依次存取。通常对于变长记录文件采用顺序存取法。
2、直接存取 • 直接存取又叫做随机存取。对于直接存取,通常是对定长记录式文件而言。在请求对某个文件进行存取时,要指出存取的记录号。 • 3 、按键存取 • 每个记录有一个键,可按键进行查找。按键存取就是按给定的字段值进行存取。它被广泛地用于数据库系统。查找方法就是数据结构中介绍的顺序法、二分法和散列法等。
5.3 文件的物理结构和存贮介质 • 一、文件的物理结构 • 文件的物理结构是指一个文件在文件存贮器上存贮方式及其与文件逻辑结构的关系。它与文件的存取方法有密切关系。 • 为了有效地分配文件存贮器的存贮空间,通常把它们划分成若干个大小相等的块(例如512个字节为一块),叫物理块。
为了和逻辑文件、文件的逻辑记录相对应,在文件存贮器上的文件称为物理文件,存放文件记录的物理块叫物理记录。显然,对于无结构的字符流文件,每个物理块存放相等长度的文件信息。对于记录式文件,无论是定长还是变长记录,一个记录的长度一般与物理块的大小不等。在灵活的文件系统中,允许一个物理块包含几个记录,也允许一个记录占用几个物理块。为了讨论简单,下面我们都假定逻辑记录长度与物理块大小相等。实际的差别由用户程序去处理。为了和逻辑文件、文件的逻辑记录相对应,在文件存贮器上的文件称为物理文件,存放文件记录的物理块叫物理记录。显然,对于无结构的字符流文件,每个物理块存放相等长度的文件信息。对于记录式文件,无论是定长还是变长记录,一个记录的长度一般与物理块的大小不等。在灵活的文件系统中,允许一个物理块包含几个记录,也允许一个记录占用几个物理块。为了讨论简单,下面我们都假定逻辑记录长度与物理块大小相等。实际的差别由用户程序去处理。
为了适应用户的应用要求,文件的物理结构基本上分为连续、链接和索引三种。为了适应用户的应用要求,文件的物理结构基本上分为连续、链接和索引三种。 • 1、连续文件 • 连续文件是最简单的物理文件结构,它是把逻辑上连续的信息文件存贮在连续的物理块中的一种组织方式。见图5.2。 • 文件A 文件B 文件C 文件名 第一块号 长度 fileA 2 3 fileB 5 5 fileC 10 2 • 2 3 4 5 6 7 8 9 10 11 文件目录表 图5.2 连续结构的文件组织
连续文件有两个优点: • (1) 管理简单 只要记住文件的第一块所在位置及文件包括的块数即可; • (2) 存取速度快 只要访问一次文件的管理信息,就可方便地存取到任一记录。 • 同样,它也存在两个缺点: • (1) 不灵活 要求在文件创建时,就给出文件的最大长度; • (2) 产生碎片 当文件被删除时,文件存贮空间可能出现许多小的无法利用的碎块。
2链接(或串联)文件 • 为了克服采用连续结构的缺点,链接(或串联)文件是把逻辑上连续的信息文件存贮在不连续的物理块中,存放信息的物理块中另设一个指针指向下一个物理块。文件最后一个物理块的指针通常为0,以指示该块是链尾。链接结构文件如图5.3所示。
链接结构文件的优点是: 提高了磁盘空间利用率,不存在外部碎片问题 有利于文件插入和删除 有利于文件动态扩充 • 缺点是:只能顺序存取。 • 为了克服链接结构文件的缺点,可以把指针字从文件的各物理块中取出,放在一个表中或在存贮器中建一个索引表。MS-DOS就使用这种方式分配和管理磁盘空间,并将此表叫盘文件映射表。
利用文件映射表,不但能方便地实现顺序存取,而且也很容易地实现随机存取。虽然,存取任一记录时仍需沿链查找,但由于该表在主存,所以不必访问磁盘就能很快定位一个记录的位置。如图5.4所示,给出了用图5.3的例子建的索引表。利用文件映射表,不但能方便地实现顺序存取,而且也很容易地实现随机存取。虽然,存取任一记录时仍需沿链查找,但由于该表在主存,所以不必访问磁盘就能很快定位一个记录的位置。如图5.4所示,给出了用图5.3的例子建的索引表。
这个方法的主要缺点是在系统工作期间,整个表必须在主存。当盘容量比较大时,假定500M,若每块仍按512个字节计,则这个表将占用1 000 000项。每项至少占用3个字节。因此,这个表要占用3M字节的主存。为了节省主存,盘文件映射表也必须作为一个文件放在磁盘上。此时要求存放一个文件的各个盘块不要过分分散。否则,为了在盘文件映射表找到它们之间的对应关系,可能要读取多个存放盘文件映射表的物理块,从而减少了它的优越性。
文件B的索引块号:24 0 1 2 3 4 13 18 20 22 30 文件名 索引块号 文件A 14 文件B 24 文件C 17 文件B的逻辑块号 图5.5 索引结构的文件组织 • 3索引文件 • 连续和链接结构文件存在许多问题,为了实现文件的随机存取,在文件目录表中为每个文件保留一个索引表块号,该索引块指出文件的逻辑块与物理块的映射关系。如图5.5所示。
对于按键值存取的文件,其物理组织同样可以采用索引结构。这里,索引表是由一组键值和对应的物理块组成。 • 当文件的索引要占用几个物理块时,可将各索引块构成一个串联文件或索引文件。对于索引表文件,并通过增加一级或多级索引来查找它。例如,假定物理块长度为N,文件记录数为K,当满足N<K≤N2时,可采用二级索引,依次类推。图5.6给出了二级索引表的组织形式。
显然这种索引结构可以进一步扩展,构成一个多级索引树,以适应K>N2的情况。UNIX系统正是采用了这种灵活的索引结构,有直接索引(文件的物理块≤10时),一次间接,二次间接,直到三次间接。如图5.7所示。显然这种索引结构可以进一步扩展,构成一个多级索引树,以适应K>N2的情况。UNIX系统正是采用了这种灵活的索引结构,有直接索引(文件的物理块≤10时),一次间接,二次间接,直到三次间接。如图5.7所示。
直 • 接 • 索 • 引
索引结构文件的优点不仅允许文件动态修改,增加了使用的灵活性,允许用户按照要求,直接对文件进行存取。但具有索引结构的文件,由于使用了索引表,一方面增加了存贮空间的开销,另一方面降低了文件的存取速度(至少需要访问存贮器二次:一次访问索引表,一次访问文件信息)。索引结构文件的优点不仅允许文件动态修改,增加了使用的灵活性,允许用户按照要求,直接对文件进行存取。但具有索引结构的文件,由于使用了索引表,一方面增加了存贮空间的开销,另一方面降低了文件的存取速度(至少需要访问存贮器二次:一次访问索引表,一次访问文件信息)。
存储介质 磁带 磁盘(和光盘) 物理结构 连续结构 连续 链接 索引 存取方式 顺序存取 顺序 顺序 顺序 随机 随机 二、文件的存贮介质 文件的存贮介质是指存储文件信息的材料。它们是以块为单位进行信息的存储、传输。常用的存贮介质有磁带磁盘和光盘。其特点如下表所示:
三、 文件寻址 文件寻址与文件的物理结构和逻辑结构以及设备的物理特性密切相关 文件信息是以块为单位存储、传输的。但存取文件时,对于记录式文件,是以逻辑记录为单位提出存取要求的,因此,存储介质上的物理块长度往往与逻辑记录的长度是不匹配的,为了有效地存取文件,需要对文件的逻辑记录进行成组和分解。
1、记录的成组与分解 • 记录的成组是指将若干个记录合并成一组,以便存储和传输。 • 记录的分解是指从一组记录中将指定的记录分离出来的工作。一组中含有的逻辑记录个数称为块因子 。 • 进行成组操作时必须使用主存缓冲区,缓冲区的长度等于逻辑记录长度乘以成组的块因子 • 记录成组与分解的好处:提高了存储空间的利用率;减少了启动外设的次数,提高系统的工作效率 • 缺点:记录成组与分解必须使用主存缓冲区,增加了操作系统的开销。
2。记录分解的实现: a.根据记录号和记录长度,确定记录所在物理块的相对块号bl; b.由记录长确定记录所占用的物理块个数n; c.计算记录在所占的首物理块内的偏移量d1; d.计算记录所占的末物理块内的位移量d2,即记录在末块内占据的长度; e.根据物理块长bs及计算出来的d1和d2,进行数据的截取。 (允许跨块)
5.4 文件目录 • 引进文件系统的主要目的是使用户实现按名存取文件存贮器上的信息。实施这种功能的主要结构是文件目录。所谓文件目录是指一张记录所有文件的名字及其存放物理地址的映照表。表中还应包括文件的说明信息和控制信,以加强文件系统的功能和满足用户的各种需要。文件目录又叫文件控制块(FCB)。它是文件存在的的唯一标志。文件按性质,将文件控制块组织成文件目录。
为了减少文件的查找时间,方便文件管理,适应各种实际情况的需要,通常文件目录采用多种形式。下面介绍三种主要的目录结构形式。为了减少文件的查找时间,方便文件管理,适应各种实际情况的需要,通常文件目录采用多种形式。下面介绍三种主要的目录结构形式。 • 一、 一级目录结构 • 管理文件目录的最简单方法是采用一级目录结构。即为文件存贮器上保存的全部文件建立一张目录表,每个文件在表中占有一项。
文件名 第一个物理块号 其它管理和控制信息 A 25 B 15 C 150 . . 文件名 第一个物理块号 其它管理和控制信息 A 25 B 15 C 150 . . 图5。9 文件控制块的内容 • 目录项(FCB)包含的内容随系统不同而有所不同。图5.9给出了这种表的简单内容。 • 从图中看出,目录项中除了文件名及物理地址外,还包含了其它管理和控制信息。通常,文件目录的目录项包含如下一些信息:
文件名:由创建者给出的1~n个字符 • 文件类型:由文件扩展名给出,例如:.OBJ, EXE,BAS,C,·PAS,·ADA,… • 文件组织形式:连续、链接、或索引式 • 文件的物理地址:文件在文件存贮器上的存放位置 • 文件大小:文件的当前尺寸,以字节、字或块为单位 • 文件的拥有者:允许对文件的存取权限进行修改的用户,也即创建文件的用户。
存取权限:控制文件的读、写、执行、传送等 • 文件的创建日期:文件首次放在目录中的时间 • 文件的修改日期:文件最近被修改的时间等等。 • 每当建立一个新文件时,就在该目录表中增加一个新目录项;每当撤消一个文件时,就删除该文件所对应的目录项;每当访问某个文件时,按文件名顺序查找各目录项,从而找到对应文件的目录项。
在经过访问权限验证后,就可以根据文件的物理地址确定本次要访问的物理块。在经过访问权限验证后,就可以根据文件的物理地址确定本次要访问的物理块。 • 优点:目录结构管理简单 • 缺点:不允许文件重名,否则将出现二义性; • 当文件较多时,查找目录花费时间太多。 限制了对文件的共享。 • 下面列出常用的几种目录格式。 • 1 CP/M系统上的一级目录结构形式 • 在CP/M系统上的一级目录结构中,一个目录项有32个字节。共分成七个字段,每个字段包含的字节数用数字给以标出。
(1) 用户码(1) 记录拥有该文件的用户名。在进行文件检索时,仅当前正在系统中登录的用户才允许检索目录结构。 • (2) 文件名和文件扩展名(8.3) 文件名占8个字符,扩展名占3个字符。 • (3) 扩充标志(1) 当文件长度大于16个物理块时,一个文件就要占有多个目录项,该字段告诉用户哪一个目录项是第一个目录项,哪一个是第二个目录项等等。 • (4) 保留字段(2)
(5)块计数(1) 告诉系统该文件占有16个盘块组中的几个盘块。 • (6)磁盘块号(16) 文件占用的具体磁盘物理块号。显然这个文件系统,只能给出文件占用的盘块数,而不能给出文件的字节个数。 • 2 ms-dos系统上的目录结构形式 • MS-DOS系统上一个目录项由八个字段构成。通常包含的内容有文件名(或子目录名、或卷标名)以及与文件相关的信息。
从DOS2.0到DOS5.0,一个目录项有32个字节,其具体结构如下( 其详细描述见第十四章有关部分): • 文件名占8个字节、文件扩展名占3个字节、文件属性占1个字节、保留10个字节、时间(即几点几分几秒)占2个字节、日期(即年、月、日)占2个字节、文件所在的第一个物理块号占用2个字节、文件大小占4个字节。
3 unix系统上的目录结构形式 • unix 系统把通常的目录项分成两部分。一部分是简单的目录项,包含文件名和文件的控制信息所在的磁盘I节点号;另一部分是存放除文件名外的文件控制信息的磁盘I节点。有人把这种目录结构叫做符号文件目录和基本文件目录。其详细说明见第九章相关部分。
二、 二级目录结构 • 解决文件重名的一个办法是采用二级目录结构,即把一级目录改为二级。它由一个主文件目录(如CP/M目录中以用户名为单位构成)和其管辖的若干个子目录组成。主目录中的目录项记录各子目录的名字及子目录所在的物理地址。 • 在多用户情况下,采用二级目录较为方便。这时,系统设立一张主文件目录(记为MFD)和多个用户文件目录(记为UFD)。如图5.10所示。
Fa1的目录项 Fb1的目录项 用户A A目录所在地址 Fa2的目录项 Fb2的目录项 用户B B目录所在地址 … … … … 用户A的目录表(UFD) 用户B的目录表(UFD) 主目录(MFD) 图5。10 二级目录树结构
当一个新用户开始使用该文件系统时,系统为其在主文件目录表中找一个空表目,登记上他的用户名,并为其分配一个存放子目录的区域,然后把该区域的起始地址填写在主文件目录该用户名所对应表目中。此后,每当用户建立一个新文件时,文件系统先按用户名在主目录中找到他的子文件目录起始地址,然后在子目录表中为其建立一个目录项,填上文件名、用户名以及文件的管理和控制信息。当一个新用户开始使用该文件系统时,系统为其在主文件目录表中找一个空表目,登记上他的用户名,并为其分配一个存放子目录的区域,然后把该区域的起始地址填写在主文件目录该用户名所对应表目中。此后,每当用户建立一个新文件时,文件系统先按用户名在主目录中找到他的子文件目录起始地址,然后在子目录表中为其建立一个目录项,填上文件名、用户名以及文件的管理和控制信息。