1、第六章第六章文件文件管理管理第六章第六章文件管理文件管理 外存分配方式外存分配方式对于计算机处理和存放的大量信息对于计算机处理和存放的大量信息,因内存容因内存容量有限且无法长期保存量有限且无法长期保存,故信息总是以文件的故信息总是以文件的形式存放在辅助存储器上形式存放在辅助存储器上,当需要的时候再将当需要的时候再将它们调入内存。它们调入内存。操作系统中负责管理和存取操作系统中负责管理和存取文件信息的软件机构被称为文件管理系统文件信息的软件机构被称为文件管理系统。用户通过文件管理系统就可以用户通过文件管理系统就可以“按名存取按名存取”方便地使用文件方便地使用文件,而无需了解存储设备的硬件而无需了
2、解存储设备的硬件特征和存取过程。特征和存取过程。文件管理任务文件管理任务l任务:把存储、检索、共享和保护文件的手任务:把存储、检索、共享和保护文件的手段,提供给用户,以方便用户及提高资源利段,提供给用户,以方便用户及提高资源利用。用。l功能:功能:l分配与管理外存分配与管理外存l提供合适的存储方法提供合适的存储方法l文件共享,保护解决冲突文件共享,保护解决冲突6.1 6.1 文件和文件系统文件和文件系统 l文件系统是用户与外存的接口。文件系统是用户与外存的接口。l文件系统文件系统=文件管理程序(文件和目录的集合)文件管理程序(文件和目录的集合)+它所管理的全部文件。它所管理的全部文件。l文件系
3、统的管理功能,是通过把管理的程序文件系统的管理功能,是通过把管理的程序和数据组织成一系列文件的方法实现的。和数据组织成一系列文件的方法实现的。l文件是指具有文件名的若干相关元素的集合。文件是指具有文件名的若干相关元素的集合。1 1数据项数据项在文件系统中,数据项是最低级的数据组织形式,可在文件系统中,数据项是最低级的数据组织形式,可把它分成以下两种类型把它分成以下两种类型:(1)基本数据项。这是用于描述一个对象的某种属性基本数据项。这是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数的字符集,是数据组织中可以命名的最小逻辑数据单位,又称为数据元素或字段。据单位,又称为数据元
4、素或字段。(2)组合数据项。它是由若干个基本数据项组成的,组合数据项。它是由若干个基本数据项组成的,简称组项。简称组项。基本数据项除了数据名外,还应有数据类型。基本数据项除了数据名外,还应有数据类型。2 2记录记录记录是一组相关数据项的集合,用于描述一个对象在记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。而一个对象,由于他所处需要描述对象的哪个方面。而一个对象,由于他所处的环境不同可把他作为不同的对象。的环境不同可把他作为不同的对象。在诸多记录中,为了能惟一地标识一个记录,必须在
5、在诸多记录中,为了能惟一地标识一个记录,必须在一个记录的各个数据项中,确定出一个或几个数据项,一个记录的各个数据项中,确定出一个或几个数据项,把它们的集合称为关键字把它们的集合称为关键字(key)。或者说,关键字是惟。或者说,关键字是惟一能标识一个记录的数据项。一能标识一个记录的数据项。3 3文件文件文件是指由创建者所定义的、具有文件名的一组文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构相关元素的集合,可分为有结构文件和无结构文件两种。在有结构的文件中,文件由若干个文件两种。在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个相关记录组成;
6、而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。单位,它描述了一个对象集。3 3文件文件例如,可以将一个班的学生记录作为一个文件。例如,可以将一个班的学生记录作为一个文件。一个文件必须要有一个文件名,它通常是由一一个文件必须要有一个文件名,它通常是由一串串ASCII码或码或(和和)汉字构成的,名字的长度因汉字构成的,名字的长度因系统不同而异。如在有的系统中把名字规定为系统不同而异。如在有的系统中把名字规定为8个字符,而在有的系统中又规定可用个字符,而在有的系统中又规定可用14个字个字符。用户利用文件名来访问文件
7、。符。用户利用文件名来访问文件。windows系系统中,可采用长文件名统中,可采用长文件名(255个字符个字符)。l许多操作系统支持两部分文件名,两部分之间许多操作系统支持两部分文件名,两部分之间用句号加以分隔。在句号后面的部分称作文件用句号加以分隔。在句号后面的部分称作文件扩展名,它通常给出了与文件有关的一些信息。扩展名,它通常给出了与文件有关的一些信息。在在MS-DOS中文件名由中文件名由1-8个字符和个字符和1-3个字符个字符的可选扩展名组成。在的可选扩展名组成。在UNIX中,如果使用扩中,如果使用扩展名,则其长度完全由用户决定,甚至一个文展名,则其长度完全由用户决定,甚至一个文件之中可
8、以含两个或多个部分的扩展名。件之中可以含两个或多个部分的扩展名。3文件一些典型的文件扩展名一些典型的文件扩展名扩展名扩展名含义含义file.bak备份文件备份文件file.cC源程序源程序file.f77Fortran77程序程序file.gifCompuserve图形转换格式图像图形转换格式图像file.hlp帮助文件帮助文件file.html万维网超文本标记语言文档万维网超文本标记语言文档file.mpg用用MPEG标准编码的电影标准编码的电影file.o目标文件目标文件(编译器输出,但未连接编译器输出,但未连接)file.psPostscript文件文件file.tex用于用于TEX格式
9、化程序的输入格式化程序的输入file.txt一般文档文件一般文档文件file.zip压缩存档压缩存档3文件l每个文件都有文件名和数据。此外,所有操作每个文件都有文件名和数据。此外,所有操作系统还给文件赋以其他信息,比如,文件创建系统还给文件赋以其他信息,比如,文件创建日期、文件长度等等。我们把额外的项称为文日期、文件长度等等。我们把额外的项称为文件属性件属性(attribute)。不同系统的属性差别很大。不同系统的属性差别很大。下面列出了一些可能的属性,但其他的属性也下面列出了一些可能的属性,但其他的属性也存在。然而,每种属性都在某个系统中使用。存在。然而,每种属性都在某个系统中使用。3文件(
10、1)文件类型文件类型。可以从不同的角度来规定文件的类型,。可以从不同的角度来规定文件的类型,如源文件、目标文件及可执行文件等。如源文件、目标文件及可执行文件等。(2)文件长度文件长度。文件长度指文件的当前长度,长度的。文件长度指文件的当前长度,长度的单位可以是字节、字或块,也可能是最大允许的单位可以是字节、字或块,也可能是最大允许的长度。长度。(3)文件的物理位置文件的物理位置。该项属性通常是用于指示文件。该项属性通常是用于指示文件在哪一个设备上及在该设备的哪个位置的指针。在哪一个设备上及在该设备的哪个位置的指针。(4)文件的建立时间文件的建立时间。这是指文件最后一次的修改时。这是指文件最后一
11、次的修改时间等。间等。域域含义含义保护保护谁能访问该文件,以何种方式访问谁能访问该文件,以何种方式访问口令口令访问该文件所需口令访问该文件所需口令创建者创建者文件创建者的文件创建者的ID拥有者拥有者当前拥有者当前拥有者只读标志只读标志0表示读写,表示读写,1表示只读表示只读隐藏标志隐藏标志0表示正常,表示正常,1表示不在列表中显示表示不在列表中显示系统标志系统标志0表示正常文件,表示正常文件,1表示系统文件表示系统文件存档标志存档标志0表示已备份过,表示已备份过,1表示需要备份表示需要备份ASCII/二进制二进制0表示表示ASCII文件,文件,1表示二进制文件表示二进制文件随机存取标志随机存取
12、标志0表示只能顺序存取,表示只能顺序存取,1表示随机存取表示随机存取临时标志临时标志0表示正常,表示正常,1表示在进程退出时删除文表示在进程退出时删除文件件锁标志锁标志0表示未锁,非零表示已锁表示未锁,非零表示已锁记录长度记录长度一条记录的字节数一条记录的字节数关键字位置关键字位置每条记录中关键字偏移每条记录中关键字偏移关键字长度关键字长度关键字域的字节数关键字域的字节数创建时间创建时间文件创建的日期和时间文件创建的日期和时间最后存取时最后存取时间间文件最后存取的日期和时间文件最后存取的日期和时间最后修改时最后修改时间间文件最后修改的日期和时间文件最后修改的日期和时间当前长度当前长度文件字节数
13、文件字节数最大长度最大长度文件最大允许字节数文件最大允许字节数文件文件记录记录1记录记录2记录记录n数据项数据项1数据项数据项2数据项数据项n6.1.2文件类型和文件系统模型1文件类型文件的分类是为了更好地管理和使用,要科学文件的分类是为了更好地管理和使用,要科学地分门别类,对不同的文件进行不同的管理。地分门别类,对不同的文件进行不同的管理。这样,这样,不仅提高了文件的存取速度,对文件不仅提高了文件的存取速度,对文件的共享和保护也有利。的共享和保护也有利。由于不同系统对文件的管理方式不同,因而由于不同系统对文件的管理方式不同,因而它们对文件的分类方法也有很大差异。下面它们对文件的分类方法也有很
14、大差异。下面是常用的几种文件分类方法。是常用的几种文件分类方法。1)按用途分类根据文件的性质和用途的不同,可分为根据文件的性质和用途的不同,可分为:(1)系统文件:由系统软件构成的文件。)系统文件:由系统软件构成的文件。(2)用户文件:用户委托文件系统保存的文)用户文件:用户委托文件系统保存的文件。由用户的源代码、目标文件、可执行件。由用户的源代码、目标文件、可执行文件或数据等构成。文件或数据等构成。(3)库文件:由系统提供给用户使用的各种)库文件:由系统提供给用户使用的各种标准过程、函数和应用程序文件。(可以标准过程、函数和应用程序文件。(可以使用,不能修改)使用,不能修改)2)按文件中数据
15、的形式分类按文件中数据的形式分类,可分为三类:按文件中数据的形式分类,可分为三类:(1)源文件:由源程序和数据构成的文件。)源文件:由源程序和数据构成的文件。(2)目标文件:把源程序经过相应语言的编)目标文件:把源程序经过相应语言的编译程序编译过,但尚未经过链接程序的目译程序编译过,但尚未经过链接程序的目标代码所构成的文件。标代码所构成的文件。(3)可执行文件:把编译后所产生的目标代)可执行文件:把编译后所产生的目标代码再经过链接程序链接后所形成的文件。码再经过链接程序链接后所形成的文件。3)按存取控制属性分类根据存取控制属性,可将文件分为三类:根据存取控制属性,可将文件分为三类:(1)只执行
16、文件。该类文件只允许被核准的用只执行文件。该类文件只允许被核准的用户调用执行,既不允许读,更不允许写。户调用执行,既不允许读,更不允许写。(2)只读文件。该类文件只允许文件主及被核只读文件。该类文件只允许文件主及被核准的用户去读,但不允许写。准的用户去读,但不允许写。(3)读写文件。这是指允许文件主和被核准的读写文件。这是指允许文件主和被核准的用户去读或写的文件。用户去读或写的文件。4)按组织形式和处理方式分类根据文件的组织形式和处理方式,可将文件分为:根据文件的组织形式和处理方式,可将文件分为:(1)普通文件:由普通文件:由ASCII码或二进制码组成的字符文码或二进制码组成的字符文件。件。(
17、2)目录文件:由文件目录组成的,用来管理和实现目录文件:由文件目录组成的,用来管理和实现文件系统功能的系统文件,通过目录文件可以对文件系统功能的系统文件,通过目录文件可以对其它文件的信息进行检索。其它文件的信息进行检索。(3)特殊文件:特指系统中的各类特殊文件:特指系统中的各类I/O设备。为了便设备。为了便于统一管理,系统将所有的输入于统一管理,系统将所有的输入/输出设备都视为输出设备都视为文件,按文件方式提供给用户使用。文件,按文件方式提供给用户使用。2文件系统模型l可将该模型分为三个层次,其最底层是可将该模型分为三个层次,其最底层是对象及其对象及其属性属性;中间层是;中间层是对对象进行操纵
18、和管理的软件集对对象进行操纵和管理的软件集合合;最高层是;最高层是文件系统提供给用户的接口文件系统提供给用户的接口。1)对象及其属性文件管理系统管理的对象有:文件管理系统管理的对象有:文件文件。它作为文件管理的直接对象。它作为文件管理的直接对象。目录目录。为了方便用户对文件的存取和检索,在文。为了方便用户对文件的存取和检索,在文件系统中必须配置目录,每个目录项中,必须含件系统中必须配置目录,每个目录项中,必须含有文件名及该文件所在的物理地址有文件名及该文件所在的物理地址(或指针或指针)。磁盘磁盘(磁带磁带)存储空间存储空间。文件和目录必定占用存储。文件和目录必定占用存储空间,对这部分空间的有效
19、管理,不仅能提高外空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。存的利用率,而且能提高对文件的存取速度。2)对对象操纵和管理的软件集合这是文件管理系统的核心部分。文件这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其系统的功能大多是在这一层实现的,其中包括中包括:对文件存储空间的管理、对文件对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。管理,以及对文件的共享与保护等功能。3)文件系统的接口为
20、方便用户使用文件系统,文件系统通常向用户提为方便用户使用文件系统,文件系统通常向用户提供两种类型的接口供两种类型的接口:(1)命令接口。命令接口。这是指作为用户与文件系统交互的这是指作为用户与文件系统交互的接口。接口。用户可通过键盘终端键入命令,取得文件用户可通过键盘终端键入命令,取得文件系统的服务。系统的服务。(2)程序接口。这是指作为用户程序与文件系统的接程序接口。这是指作为用户程序与文件系统的接口。用户程序可通过系统调用来取得文件系统的口。用户程序可通过系统调用来取得文件系统的服务。服务。6.1.3文件操作文件操作1最基本的文件操作(1)创建文件。在创建一个新文件时,系统创建文件。在创建
21、一个新文件时,系统首先要为新文件分配必要的外存空间,首先要为新文件分配必要的外存空间,并在文件系统的目录中,为之建立一个并在文件系统的目录中,为之建立一个目录项。目录项中应记录新文件的文件目录项。目录项中应记录新文件的文件名及其在外存的地址等属性。名及其在外存的地址等属性。(2)(2)创建文件创建文件实质是建立文件的实质是建立文件的FCBFCB(1)创建文件createcreate(文件名,访问权限,(,最大长度)文件名,访问权限,(,最大长度)(1 1)检查参数的合法性)检查参数的合法性(2 2)检查同一目录下有无重名文件)检查同一目录下有无重名文件(3 3)在目录中有无空闲位置)在目录中有
22、无空闲位置(4 4)填写目录项内容:)填写目录项内容:文件名,用户名等,存取权限,长度置零,文件名,用户名等,存取权限,长度置零,(,首址)(,首址)(5 5)返回)返回(2)删除文件当已不再需要某文件时,可将它从文件系当已不再需要某文件时,可将它从文件系统中删除。在删除时,系统应先从目录统中删除。在删除时,系统应先从目录中找到要删除文件的目录项,使之成为中找到要删除文件的目录项,使之成为空项,然后回收该文件所占用的存储空空项,然后回收该文件所占用的存储空间。间。删除文件删除文件时要时要撤销撤销FCBFCB(3)读文件l在读一个文件时,须在相应系统调用中给出文件在读一个文件时,须在相应系统调用
23、中给出文件名和应读入的内存目标地址。名和应读入的内存目标地址。readread(文件名,(文件内位置),要读的长度,内(文件名,(文件内位置),要读的长度,内存目的地址)存目的地址)(1 1)检查长度是否为正整数)检查长度是否为正整数(2 2)根据文件名查找目录,确定该文件在目录中的根据文件名查找目录,确定该文件在目录中的位置。位置。(3 3)根据隐含参数中的进程主和目录中该文件的存)根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读?储权限数据,检查是否有权读?(4 4)由文件内位置与要读的长度计算最末位置,由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较将其
24、与目录中的文件长度比较。(5 5)根据参数中的位置、长度和目录中的映射根据参数中的位置、长度和目录中的映射信息,确定块号、块数、块内位移与长度。信息,确定块号、块数、块内位移与长度。(6 6)根据下一块号读块至内存缓冲区)根据下一块号读块至内存缓冲区(7 7)根据块内位移长度取出要读的内容,送至)根据块内位移长度取出要读的内容,送至参数中的内存目的地址参数中的内存目的地址(8 8)根据块内长度或起始块号根据块内长度或起始块号+块数,确定还读块数,确定还读下一块吗?同时确定下一块块号下一块吗?同时确定下一块块号(9 9)返回)返回(4)写文件在写一个文件时,须在相应系统调用中给出在写一个文件时,
25、须在相应系统调用中给出该文件名及该文件在内存中的该文件名及该文件在内存中的(源源)地址。为地址。为此,也同样须先查找目录,找到指定文件此,也同样须先查找目录,找到指定文件的目录项,再利用目录中的写指针进行写的目录项,再利用目录中的写指针进行写操作。操作。(5)截断文件如果一个文件的内容已经陈旧而需要全部更如果一个文件的内容已经陈旧而需要全部更新时,一种方法是将此文件删除,再重新新时,一种方法是将此文件删除,再重新创建一个新文件。但如果文件名及其属性创建一个新文件。但如果文件名及其属性均无改变时,则可采取另一种所谓的截断均无改变时,则可采取另一种所谓的截断文件的方法,此即将原有文件的长度设置文件
26、的方法,此即将原有文件的长度设置为为0,或者说是放弃原有的文件内容。,或者说是放弃原有的文件内容。(6)设置文件的读/写位置前述的文件读前述的文件读/写操作都只提供了对文件顺序写操作都只提供了对文件顺序存取的手段,即每次都是从文件的始端读存取的手段,即每次都是从文件的始端读或写。设置文件读或写。设置文件读/写位置的操作,用于设写位置的操作,用于设置文件读置文件读/写指针的位置,以便每次读写指针的位置,以便每次读/写文写文件时,不是从其始端而是从所设置的位置件时,不是从其始端而是从所设置的位置开始操作。也正因如此,才能改顺序存取开始操作。也正因如此,才能改顺序存取为随机存取。为随机存取。2文件的
27、“打开”和“关闭”操作当用户要求对一个文件实施多次读当用户要求对一个文件实施多次读/写或其它写或其它操作时,每次都要从检索目录开始。使检操作时,每次都要从检索目录开始。使检索开销很大。索开销很大。为了避免多次重复地检索目录,在大多数为了避免多次重复地检索目录,在大多数OS中都引入了中都引入了“打开打开”(open)这一文件系统这一文件系统调用,当用户第一次请求对某文件进行操调用,当用户第一次请求对某文件进行操作时,先利用作时,先利用open系统调用将该文件打开。系统调用将该文件打开。2文件的“打开”和“关闭”操作所谓所谓“打开打开”,是指系统将指名文件的属性从外存,是指系统将指名文件的属性从外
28、存拷贝到内存打开文件表的一个表目中,并将该表拷贝到内存打开文件表的一个表目中,并将该表目的编号目的编号(或称为索引或称为索引)返回给用户。以后,当用返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。系统所返回的索引号向系统提出操作请求。如果用户已不再需要对该文件实施相应的操作时,如果用户已不再需要对该文件实施相应的操作时,可利用可利用“关闭关闭”(close)系统调用来关闭此文件,系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。将会把该文件从打开文件表中的表目上删除掉。3其它文件操
29、作OS都提供了数条有关文件操作的系统调用,最都提供了数条有关文件操作的系统调用,最常用的一类是有关对文件属性进行操作的,即常用的一类是有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性;另一类允许用户直接设置和获得文件的属性;另一类是有关目录的,如创建一个目录,删除一个目是有关目录的,如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对文件系用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。统进行操作的系统调用等。6.2文件的逻辑结构文件组织的两种观点用户观点(逻辑结构):研究的是用
30、户思维中的抽用户观点(逻辑结构):研究的是用户思维中的抽象文件,也叫逻辑文件。其目的是为用户提供一象文件,也叫逻辑文件。其目的是为用户提供一种结构清晰、使用简便的逻辑组织。种结构清晰、使用简便的逻辑组织。实现观点(物理结构):研究的是存储在物理设备实现观点(物理结构):研究的是存储在物理设备介质上的实际文件,即物理文件。其目的是选择介质上的实际文件,即物理文件。其目的是选择一些性能良好、设备利用率高的物理结构。系统一些性能良好、设备利用率高的物理结构。系统按此和外部设备打交道,控制信息的传输。按此和外部设备打交道,控制信息的传输。6.2.1文件逻辑结构的类型1.有结构的文件 有结构的文件是指由
31、若干个相关的记录构成的文有结构的文件是指由若干个相关的记录构成的文件,又称件,又称记录式文件记录式文件。文件是记录的集合文件是记录的集合.每个记每个记录由彼此相关的域构成。记录可按顺序编号为记录由彼此相关的域构成。记录可按顺序编号为记录录1,记录,记录2,记录,记录n。如果文件中。如果文件中所有记录的所有记录的长度都相同长度都相同,则这种文件为,则这种文件为定长记录文件。定长记录文件。定长记录文件的长度定长记录文件的长度=记录个数记录个数*记录长度。记录长度。变长记录文件的长度为各记录长度之和。变长记录文件的长度为各记录长度之和。1.有结构的文件根据用户和系统管理上的需要,可采用多种方式来根据
32、用户和系统管理上的需要,可采用多种方式来组织这些记录,形成下述的几种文件:组织这些记录,形成下述的几种文件:(1)顺序文件顺序文件。这是由一系列记录按某种顺序排列所。这是由一系列记录按某种顺序排列所形成的文件。其中的记录通常是定长记录。形成的文件。其中的记录通常是定长记录。(2)索引文件索引文件。当记录为可变长度时,通常为之建立。当记录为可变长度时,通常为之建立一张索引表,并为每个记录设置一个表项。一张索引表,并为每个记录设置一个表项。(3)索引顺序文件索引顺序文件。这是上述两种文件构成方式的结。这是上述两种文件构成方式的结合。它为文件建立一张索引表,为每一组记录中合。它为文件建立一张索引表,
33、为每一组记录中的第一个记录设置一个表项。的第一个记录设置一个表项。2无结构文件l对大量的源程序、可执行文件、库函数等,所采对大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即用的就是无结构的文件形式,即流式文件流式文件。其长。其长度以字节为单位。对流式文件的访问,则是采用度以字节为单位。对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。可以把流读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。式文件看作是记录式文件的一个特例。l在在UNIX系统中,所有的文件都被看作是流式文件;系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为
34、流式文件;系统不即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。对文件进行格式处理。6.2.2顺序文件1 1逻辑记录的排序逻辑记录的排序文件是记录的集合。文件中的记录可以是任意文件是记录的集合。文件中的记录可以是任意顺序的,因此,它可以按照各种不同的顺序进行顺序的,因此,它可以按照各种不同的顺序进行排列。一般地,可归纳为以下两种情况:排列。一般地,可归纳为以下两种情况:第一种是串结构第一种是串结构,各记录之间的顺序与关键字无,各记录之间的顺序与关键字无关。关。第二种情况是顺序结构第二种情况是顺序结构,指文件中的所有记录按,指文件中的所有记录按关键字关键字(词词)排列。排列。2对顺
35、序文件的读/写操作顺序文件中的记录可以是定长的,也可以是变长的。顺序文件中的记录可以是定长的,也可以是变长的。定长记录:定长记录:读指针读指针rptrrptr指向下一次读出的记录地址;指向下一次读出的记录地址;写指针写指针wptrwptr指向下一次写入的记录地址。指向下一次写入的记录地址。读完指针做相应修改读完指针做相应修改:Rptr:=Rptr+L 写完指针做相应修改写完指针做相应修改:Wptr:=Wptr+L变长记录:变长记录:对于变长记录的顺序文件对于变长记录的顺序文件.读完读完rptr:=rptr+Lirptr:=rptr+LiR0R1R2R3RiLLLLLL2L3L4LiL(i1)L
36、Rptr(a)定长记录文件L0R0L1R1RiWptr(b)变长记录文件Li00L0L01L1L0L12Li(Lk1)i1k0(Lk1)ik03.顺序文件的优缺点 优点:方便对记录进行批量存取时,此优点:方便对记录进行批量存取时,此外,也只有顺序文件才能存储在磁带上,外,也只有顺序文件才能存储在磁带上,并能有效地工作。并能有效地工作。缺点:要求查找或修改单个记录,系统缺点:要求查找或修改单个记录,系统要逐个地查找诸记录。要逐个地查找诸记录。增加或删除一个记录较困难。增加或删除一个记录较困难。6.2.3 索引文件 对于定长记录文件,如果要查找第对于定长记录文件,如果要查找第i i个记录,个记录,
37、则第则第i i个记录的首地址为:个记录的首地址为:A Ai i=i=iL L 对于可变长度记录的文件,要查找其第对于可变长度记录的文件,要查找其第i i个个记录时,须顺序地查找每个记录,从中获得相记录时,须顺序地查找每个记录,从中获得相应记录的长度应记录的长度L Li i。l对于变长记录,用直接存取方法来访问文件中的对于变长记录,用直接存取方法来访问文件中的一个记录是十分低效的。一个记录是十分低效的。l为了解决这一问题,可为变长记录文件建立一张为了解决这一问题,可为变长记录文件建立一张索引表,对主文件中的每个记录,在索引表中设索引表,对主文件中的每个记录,在索引表中设有一个相应的表项,用于记录
38、该记录的长度有一个相应的表项,用于记录该记录的长度L及及指向该记录的指针指向该记录的指针(指向该记录在逻辑地址空间的指向该记录在逻辑地址空间的首址首址)。6.2.3 索引文件 索引文件的组织 6.2.4索引顺序文件索引顺序文件是顺序文件和索引文件相结索引顺序文件是顺序文件和索引文件相结合的产物。它将顺序文件中的所有记录合的产物。它将顺序文件中的所有记录分为若干个组;为顺序文件建立一张索分为若干个组;为顺序文件建立一张索引表,在索引表中为每组中的第一个记引表,在索引表中为每组中的第一个记录建立一个索引项,其中含有该记录的录建立一个索引项,其中含有该记录的键值和指向该记录的指针。键值和指向该记录的
39、指针。索引顺序文件 6.2.5 直接文件和哈希文件 1.直接文件 对于直接文件,则可根据给定的记录键值对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址。这种由记键值本身就决定了记录的物理地址。这种由记录键值到记录物理地址的转换被称为键值转换录键值到记录物理地址的转换被称为键值转换。组织直接文件的关键,组织直接文件的关键,在于用什么方法进行从在于用什么方法进行从记录值到物理地址的转换。记录值到物理地址的转换。哈希哈希(Hash)文件利用文件利用Hash函数函数(或称散列函或称散列函数数),可将记录
40、键值转换为相应记录的地址。,可将记录键值转换为相应记录的地址。但为了能实现文件存储空间的动态分配,但为了能实现文件存储空间的动态分配,通常由通常由Hash函数所求得的并非是相应记录函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物针,该表目的内容指向相应记录所在的物理块。理块。2.哈希(Hash)文件 Hash文件的逻辑结构fHash函数函数目录表目录表键值键值6.3外存分配方式磁盘是一种可按指定的块地址进行信息存取的设备。磁盘是一种可按指定的块地址进行信息存取的设备。对存储在磁盘上的文件,既可采用顺序存取方式
41、,对存储在磁盘上的文件,既可采用顺序存取方式,又可采用随机存取方式。又可采用随机存取方式。采用不同的分配方式,会形成不同的文件物理结构采用不同的分配方式,会形成不同的文件物理结构连续分配连续分配顺序式文件结构顺序式文件结构链接分配链接分配链接式文件结构链接式文件结构索引分配索引分配索引式文件结构索引式文件结构连续分配要求为每一个文件分配一组相邻接的连续分配要求为每一个文件分配一组相邻接的盘块。盘块。在采用连续分配方式时,可把逻辑文件中的记在采用连续分配方式时,可把逻辑文件中的记录顺序地存储到邻接的各物理盘块中,这样录顺序地存储到邻接的各物理盘块中,这样所形成的文件结构称为顺序文件结构,此时所形
42、成的文件结构称为顺序文件结构,此时的物理文件称为顺序文件。的物理文件称为顺序文件。6.4.1 连续分配1230567491011813141512171819162122232025262724list29303128mailcountfilestartlengthcount02tr153mail216list293f72目录trf 2.连续分配的主要优缺点优点优点:()顺序访问容易;支持顺序存取和随机存取;顺序访问容易;支持顺序存取和随机存取;()顺序存取速度快;所需的磁盘寻道次数和寻顺序存取速度快;所需的磁盘寻道次数和寻道时间最少。道时间最少。缺点缺点:()要求有连接的存储空间;要求有连接
43、的存储空间;外部碎片外部碎片问题问题()必须事先知道文件的长度;必须事先知道文件的长度;文件不能动态增文件不能动态增长;预留空间;长;预留空间;不利于文件插入和删除不利于文件插入和删除6.3.2链接分配一个文件的信息一个文件的信息存放在若干不连续的物理块存放在若干不连续的物理块中,中,各块之间通过指针链接。各块之间通过指针链接。优点:优点:提高了磁盘空间利用率提高了磁盘空间利用率,不存在外部碎片问题不存在外部碎片问题有利于文件插入和删除有利于文件插入和删除有利于文件动态扩充有利于文件动态扩充缺点:缺点:存取速度慢,不适于随机存取存取速度慢,不适于随机存取更多的寻道次数和寻道时间更多的寻道次数和
44、寻道时间1隐式链接l在采用隐式链接分配方式时,在文件在采用隐式链接分配方式时,在文件目录的每个目录项中,都须含有指向目录的每个目录项中,都须含有指向链接文件第一个盘块和最后一个盘块链接文件第一个盘块和最后一个盘块的指针。的指针。l而在每个盘块中都含有一个指向下一而在每个盘块中都含有一个指向下一个盘块的指针。个盘块的指针。文件名文件名始址始址末址末址jeep925文件目录文件目录01234567891011121314151617181920212223242526272829303111016-125磁盘空间的链接式分配2显式链接把用于链接文件各物理块的指针,显式地存放在把用于链接文件各物理块
45、的指针,显式地存放在内存的一张链接表中。该表在整个磁盘仅设置内存的一张链接表中。该表在整个磁盘仅设置一张,在每个表项中存放链接指针,即下一个一张,在每个表项中存放链接指针,即下一个盘块号。在该表中,凡是属于某一文件的第一盘块号。在该表中,凡是属于某一文件的第一个盘块号,或者说是每一条链的链首指针所对个盘块号,或者说是每一条链的链首指针所对应的盘块号,均作为文件地址被填入相应文件应的盘块号,均作为文件地址被填入相应文件的的FCB的的“物理地址物理地址”字段中。由于分配给文字段中。由于分配给文件的所有盘块号都放在该表中,故把该表称为件的所有盘块号都放在该表中,故把该表称为文件分配表文件分配表FAT
46、。显式链接结构 6.3.3 FAT和NTFS技术微软公司的操作系统早期采用的都是微软公司的操作系统早期采用的都是FAT文件系统格式包括:文件系统格式包括:FAT12,FAT16,FAT32最近广泛采用最近广泛采用NTFS文件系统格式文件系统格式Linux操作系统主要采用操作系统主要采用efx2,efx3文件系文件系统格式统格式1FAT121)以盘块为基本分配单位以盘块为基本分配单位早期早期MS-DOS操作系统所使用的是操作系统所使用的是FAT12文件文件系统,在每个分区中都配有两张文件分配表系统,在每个分区中都配有两张文件分配表FAT1和和FAT2,在,在FAT的每个表项中存放下一个盘块号,的
47、每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的件的第一个盘块号放在自己的FCB中。中。6EOF11105EOF0123456789FATFCB A4FCB B9MS-DOS的文件物理结构的文件物理结构2)簇的基本概念为了适应磁盘容量不断增大的需要,在进行盘块分为了适应磁盘容量不断增大的需要,在进行盘块分配时,不再以盘块而是以簇配时,不再以盘块而是以簇(cluster)为基本单位。为基本单位。簇是一组连续的扇区,在簇是一组
48、连续的扇区,在FAT中它是作为一个虚中它是作为一个虚拟扇区,簇的大小一般是拟扇区,簇的大小一般是2n(n为整数为整数)个盘块。一个盘块。一个簇应包含扇区的数量与磁盘容量的大小直接有个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇仅有一个扇区时,磁盘的最关。例如,当一个簇仅有一个扇区时,磁盘的最大容量为大容量为8MB;当一个簇包含两个扇区时,磁盘;当一个簇包含两个扇区时,磁盘的最大容量可以达到的最大容量可以达到16MB。3)FAT12存在的问题尽管尽管FAT12曾是一个不错的文件系统,但毕竟已老曾是一个不错的文件系统,但毕竟已老化,已不能满足操作系统发展的需要,其表现出化,已不能满足
49、操作系统发展的需要,其表现出来的主要问题是,对所允许的磁盘容量存在着严来的主要问题是,对所允许的磁盘容量存在着严重的限制,通常只能是数十兆字节,虽然可以用重的限制,通常只能是数十兆字节,虽然可以用继续增加簇的大小来提高所允许的最大磁盘容量,继续增加簇的大小来提高所允许的最大磁盘容量,但随着支持的硬盘容量的增加,相应的簇内碎片但随着支持的硬盘容量的增加,相应的簇内碎片也将随之成倍地增加。此外,它只能支持也将随之成倍地增加。此外,它只能支持8+3格格式的文件名。式的文件名。2FAT16FAT12表最多只允许表最多只允许4096个表项,亦即最多个表项,亦即最多只能将一个磁盘分区分为只能将一个磁盘分区
50、分为4096个簇。这样,个簇。这样,随着磁盘容量的增加,必定会引起簇的大随着磁盘容量的增加,必定会引起簇的大小和簇内碎片也随之增加。如果我们将小和簇内碎片也随之增加。如果我们将FAT表的宽度增至表的宽度增至16位,最大表项数将增位,最大表项数将增至至65536个,此时便能将一个磁盘分区分为个,此时便能将一个磁盘分区分为65536(216)个簇。我们把具有个簇。我们把具有16位表宽的位表宽的FAT表称为表称为FAT16。3FAT32FAT32是是FAT系列文件系统的最后一个产品。每一系列文件系统的最后一个产品。每一簇在簇在FAT表中的表项占据表中的表项占据4字节字节(232),FAT表可以表可以
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。