第六章文件管理第六章文件管理6.1文件和文件系统6.2文件的逻辑结构6.3外存分配方式6.4目录管理6.5文件存储空间的管理6.6文件共享与文件保护6.7数据一致性控制第六章文件管理6.1文件和文件系统6.1.1文件、记录和数据项1.数据项(1)基本数据项。这是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。它的命名往往与其属性一致。例如,用于描述一个学生的基本数据项有:学号、姓名、年龄、所在班级等。第六章文件管理(2)组合数据项。它是由若干个基本数据项组成的,简称组项。例如,经理便是个组项,它由正经理和副经理两个基本项组成。又如,工资也是个组项,它可由基本工资、工龄工资和奖励工资等基本项所组成。基本数据项除了数据名外,还应有数据类型。因为基本项仅是描述某个对象的属性,根据属性的不同,需要用不同的数据类型来描述。由数据项的名字和类型两者共同定义了一个数据项的“型”。而表征一个实体在数据项上的数据则称为“值”。例如,学号/30211、姓名/王有年、性别/男等。第六章文件管理2.记录记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。在诸多记录中,为能唯一的标识一个记录,必须在一个记录的各个数据项中,确定出一个或几个数据项,把它们的集合称为关键字。也即说关键字是唯一能标识一个记录的数据项第六章文件管理3.文件文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。文件必须要有文件名和属性。属性可以包括文件类型、文件长度、文件的物理位置和文件的建立时间。第六章文件管理(1)文件类型。(2)文件长度。(3)文件的物理位置。(4)文件的建立时间。文件记录1记录2…记录n数据项1数据项2…数据项n图6-1文件、记录和数据项之间的层次关系第六章文件管理6.1.2文件类型和文件系统模型1.1)按用途分类(1)系统文件(2)用户文件(3)库文件第六章文件管理2)按文件中数据的形式分类(1)源文件。(2)目标文件。(3)可执行文件。第六章文件管理3)按存取控制属性分类(1)只执行文件。(2)只读文件。(3)读写文件。第六章文件管理4)按组织形式和处理方式分类(1)普通文件(2)目录文件(3)特殊文件第六章文件管理2.文件系统模型图6-2文件系统模型文件系统接口对对象操纵和管理的软件集合对象及其属性用户(程序)第六章文件管理1)文件管理系统管理的对象有:①文件。它作为文件管理的直接对象。②目录。为了方便用户对文件的存取和检索,在文件系统中必须配置目录。对目录的组织和管理是方便用户和提高对文件存取速度的关键。③磁盘(磁带)存储空间。文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。第六章文件管理2)这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。第六章文件管理3)为方便用户使用文件系统,文件系统通常向用户提供(1)命令接口。这是指作为用户与文件系统交互的接口。用户可通过键盘终端键入命令,取得文件系统的服务。(2)程序接口。这是指作为用户程序与文件系统的接口。用户程序可通过系统调用来取得文件系统的服务。第六章文件管理6.1.3文件操作创建文件。创建新文件时先分配空间,然后建立记录文件属性的目录项。删除文件。找到要删除文件的目录项清空,回收存储空间。读文件。找到文件目录项,以确定文件在外存的位置。用读指针操作。写文件。先查找目录项,再利用写指针操作。截断文件。将无用文件长度置为0,有别于删除文件。设置文件的读/写位置。用于设置文件读/写指针的位置,而不是每次都从文件始端读写。第六章文件管理2.文件的“打开”和“关闭”操作所谓“打开”,是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。第六章文件管理3.其它文件操作为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类:最常用的一类是有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者(文件主)、改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等);另一类是有关目录的,如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。第六章文件管理6.2文件的逻辑结构对于任何一个文件,(1)文件的逻辑结构(FileLogicalStructure):从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立与文件的物理特性,又称为文件组织。(2)文件的物理结构:又称为文件的存储结构,是指文件在外存上的存储组织形式。与存储介质的存储性能和采用的外存分配方式有关。第六章文件管理6.2.1文件逻辑结构的类型可以分为两大类,一类是有结构文件,是指由一个以上的记录构成的文件,故又把它称为记录式文件;其二是无结构文件,这是指由字符流构成的文件,故又称为是流式文件。第六章文件管理有结构文件根据记录的长度可分为定长记录文件和不定长记录文件。1.定长记录:文件中所有的记录长度是相同的。具有相同的数据项顺序和长度。2.变长纪录:指文件中的各记录长度不相同。第六章文件管理根据记录的组织方式分为下列文件:1.顺序文件。由一系列记录按某种顺序排列所形成的文件。通常是定长记录。2.索引文件。当记录可变长时,通常为之建立一张索引表,并为每个记录设置一个表项以加快对记录检索的速度。3.索引顺序文件。上述两种方式的结合。为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。有结构文件第六章文件管理2.无结构文件如果说大量的数据结构和数据库,是采用有结构的文件形式的话,则大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。其长度以字节为单位。对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。在UNIX系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。第六章文件管理6.2.2顺序文件1.逻辑记录的排序第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,第二种情况是顺序结构,指文件中的所有记录按关键字(词)排列。可以按关键词的长短从小到大排序,也可以从大到小排序;或按其英文字母顺序排序。第六章文件管理2.对顺序文件(SequentialFile)的读/R0R1R2R3…Ri…LLLLLL2L3L4LL(i+1)LRptr(a)定长记录文件L0R0L1R1…Ri…Wptr(b)变长记录文件Li00L0L0+1L1L0+L1+2Li∑(Lk+1)i-1k=0∑(Lk+1)ik=0图6-3定长和变长记录文件第六章文件管理3.顺序文件的优缺点优点:顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次操作一大批记录。只有顺序文件才能存储在磁带上,并能有效的工作。缺点:在交互应用的场合,如果进程操作对象是单个记录,顺序文件的性能就可能很差。当文件较大时更差。如想增加或删除一个记录都比较困难。第六章文件管理6.2.3索引文件对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址:Ai=i×L然而,对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,然后才能按下式计算出第i个记录的首址。假定在每个记录前用一个字节指明该记录的长度,则10iiiiiLA第六章文件管理索引号0长度m指针ptrm01m1…imi…索引表R0R1…Ri…逻辑文件图6-4索引文件的组织第六章文件管理在对索引文件进行检索时,首先是根据用户(程序)提供的关键字,并利用折半查找法去检索索引表,从中找出相应的表项;再利用该表项中给出的指向记录的指针值,去访问所需的记录。而每当要向索引文件增加一个新记录时就需对索引表进行修改。由于索引文件可有较快的检索速度,故用于要求及时性较高的场合。索引文件的主要问题是除了有主文件外,还需配备一张索引表,而且每个记录都要有一个索引项,因此提高了存储费用。索引文件的特点第六章文件管理6.2.4索引顺序文件键AnQiBaoRongChenLin逻辑地址姓名AnQiAnKang其它属性BaoRong…逻辑文件图6-5索引顺序文件第六章文件管理6.2.5直接文件和哈希文件1.直接文件对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址。这种由记录键值到记录物理地址的转换被称为键值转换(Keytoaddresstransformation)。组织直接文件的关键,在于用什么方法进行从记录值到物理地址的转换。第六章文件管理2.哈希(Hash)文件图6-6Hash文件的逻辑结构fHash函数目录表键值第六章文件管理利用Hash函数将记录键值转换为相应记录的地址。但为了实现文件存储空间的动态分配,通常由Hash函数所求得的并非是相应记录的地址,而是指向一目录表相应表目的指针,该表目的内容指向相应记录所在的物理块。第六章文件管理6.3外存分配方式6.3.1连续分配1230567491011813141512171819162122232025262724list29303128mailcountfilestartlengthcount02tr143mail196list284f62目录trf图6-7磁盘空间的连续分配第六章文件管理2.连续分配的主要优缺点(1)顺序访问容易,连续分配也支持直接存取。(2)顺序访问速度快。(1)要求有连续的存储空间。(2)必须事先知道文件的长度。第六章文件管理6.3.2链接分配1.隐式链接图6-8磁盘空间的链接式分配25123056749101181314151217181916212223202526272429303128filestartendjeep925目录101-116第六章文件管理2.显式链接图6-9显式链接结构012345物理块号2FCBFAT0451第六章文件管理6EOF11105EOF0123456789FATFCBA4FCBB9图6-10MS-DOS的文件物理结构第六章文件管理FAT和NTFS技术在早期MS-DOS中,使用的是12位的FAT12文件系统,后来为16位的FAT16文件系统,Windows95和Windows98升级为32位的FAT32,WindowsNT、Windows2000、WindowsXP进一步发展为新技术文件系统NTFS,都采用的显示链接方法。“卷”的概念:每个逻辑磁盘就是一个卷(也称分区)。每个卷都专门划出一个单独区域来存放自己的目录和FAT表,以及自己的逻辑驱动器字母。第六章文件管理1.FAT121)以盘块为基本分配单位由于每个FA