第六章文件管理第六章文件管理第六章文件管理本章主要内容•文件和文件系统•文件的逻辑结构•外存分配方式•目录管理•文件存储空间的管理•文件共享与文件保护•数据一致性控制第六章文件管理6.1文件和文件系统6.1.1文件、记录和数据项1.数据项(1)基本数据项。这是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。它的命名往往与其属性一致。例如,用于描述一个学生的基本数据项有:学号、姓名、年龄、所在班级等。第六章文件管理(2)组合数据项。由若干个基本数据项组成的,简称组项。例如,工资也是个组项,它可由基本工资、工龄工资和奖励工资等基本项所组成。基本数据项除了数据名外,还应有数据类型。因为基本项仅是描述某个对象的属性,根据属性的不同,需要用不同的数据类型来描述。例如,在描述学生的学号时,应使用整数;描述学生的姓名则应使用字符串(含汉字);描述性别时,可用逻辑变量或汉字。可见,由数据项的名字和类型两者共同定义了一个数据项的“型”。而表征一个实体在数据项上的数据则称为“值”。例如,学号/30211、姓名/王有年、性别/男等。第六章文件管理2.记录一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。而一个对象,由于他所处的环境不同可把他作为不同的对象。例如,一个学生,当把他作为班上的一名学生时,对他的描述应使用学号、姓名、年龄及所在系班,也可能还包括他所学过的课程的名称、成绩等数据项。但若把学生作为一个医疗对象时,对他描述的数据项则应使用诸如病历号、姓名、性别、出生年月、身高、体重、血压及病史等项。第六章文件管理3.文件与文件系统1文件一组带标识的在逻辑上有完整意义的信息项的序列,这个标识为文件名信息项:构成文件内容的基本单位长度:单个字节,或多个字节文件内容的意义:由文件的建立者和使用者解释第六章文件管理2文件分类可分为有结构文件和无结构文件两种。在有结构的文件中,文件由若干个相关记录组成;无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。例如,可以将一个班的学生记录作为一个文件。一个文件必须要有一个文件名,它通常是由一串ASCII码或(和)汉字构成。第六章文件管理各信息项之间具有顺序关系信息项信息项……...信息项……...信息项编号:01……i……n-1读写指针第六章文件管理(1)文件类型。(2)文件长度。(3)文件的物理位置。(4)文件的建立时间。文件记录1记录2…记录n数据项1数据项2…数据项n图6-1文件、记录和数据项之间的层次关系第六章文件管理6.1.2文件类型和文件系统模型1.按文件性质和用途分类1系统文件:有关OS及有关系统所组成文件2用户文件:3库文件:标准子程序及常用应用程序组成文件,允许用户使用但不能修改第六章文件管理2.按信息保存期限分类临时文件;永久文件;档案文件3.按文件的保护方式分类只读文件;读写文件;可执行文件4.按文件的逻辑结构分类流式文件;记录式文件第六章文件管理5.按文件的物理结构分类顺序(连续)文件;链接文件;索引文件6.UNIX系统将文件分为三类普通文件;目录文件;特殊文件(设备文件,把外部设备也看作文件)第六章文件管理普通文件(regular)包含的是用户的信息,一般为ASCII或二进制文件目录文件(directory)管理文件系统的系统文件第六章文件管理特殊文件(specialfile)字符设备文件:和输入输出有关,用于模仿串行I/O设备,例如终端,打印机,网络等块设备文件:模仿磁盘分类的目的:对不同文件进行管理,提高系统效率;提高用户界面友好性第六章文件管理2.文件系统是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。第六章文件管理3.文件系统的功能(1)统一管理文件的存储空间,实施存储空间的分配与回收(2)实现文件的按名存取名字空间映射存储空间第六章文件管理(3)实现文件信息的共享,并提供文件的保护和保密措施(4)向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令:信息存取、加工等)第六章文件管理(5)系统维护及向用户提供有关信息(6)文件系统的执行效率文件系统在操作系统接口中占的比例最大,用户使用操作系统的感觉在很大程度上取决于对文件系统的使用效果.(7)提供与I/O的统一接口第六章文件管理文件系统模型图6-2文件系统模型第六章文件管理1)文件管理系统管理的对象有:①文件。文件管理的直接对象。②目录。为了方便用户对文件的存取和检索,在文件系统中必须配置目录。对目录的组织和管理是方便用户和提高对文件存取速度的关键。③磁盘(磁带)存储空间。文件和目录必定占用存储空间,第六章文件管理2)这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。第六章文件管理3)为方便用户使用文件系统,文件系统通常向用户提供(1)命令接口。这是指作为用户与文件系统交互的接口。用户可通过键盘终端键入命令,取得文件系统的服务。(2)程序接口。这是指作为用户程序与文件系统的接口。用户程序可通过系统调用来取得文件系统的服务。第六章文件管理6.1.3文件操作介绍1.建立文件实质是建立文件的FCB,并建立必要的存储空间,分配空FCB,根据提供的参数及需要填写有关内容,返回一个文件描述目的:建立系统与文件的联系第六章文件管理create(文件名,访问权限,(,最大长度))(1)检查参数的合法性文件名是否符合命名规则是→(2),否则→错误返回(2)检查同一目录下有无重名文件无→(3),有→错误返回第六章文件管理(3)在目录中有无空闲位置有→(2),否则→不成功返回有的系统可能要为此文件申请数据块空间(申请一部分或一次性全部申请)(4)填写目录项内容:文件名,用户名等,存取权限,长度置零,(,首址)(5)返回第六章文件管理2.打开文件使用文件的第一步,任何一个文件使用前都要先打开,即把FCB送到内存fd=open(文件路径名,打开方式)(1)根据文件路径名查目录,找到FCB主部;第六章文件管理(2)根据打开方式、共享说明和用户身份检查访问合法性;(3)根据文件号查系统打开文件表,看文件是否已被打开;是→共享计数加1否则→将外存中的FCB主部等信息填入系统打开文件表空表项,共享计数置为1;第六章文件管理(4)在用户打开文件表中取一空表项,填写打开方式等,并指向系统打开文件表对应表项。返回信息:fd:文件描述符,是一个非负整数,用于以后读写文件。第六章文件管理3.关闭文件4.删除文件:撤销FCB5.指针定位seek(fd,新指针的位置)(1)由fd查用户打开文件表,找到对应的入口;(2)将用户打开文件表中文件读写指针位置设为新指针的位置,供后继读写命令存取该指针处文件内容。第六章文件管理6.读文件read(文件名,(文件内位置),要读的长度,内存目的地址)隐含参数:进程主(1)检查长度是否为正整数是→(2),否则→(10)第六章文件管理(2)根据文件名查找目录,确定该文件在目录中的位置。(3)根据隐含参数中的进程主和目录中该文件的存储权限数据,检查是否有权读?是→(4),否则→(10)第六章文件管理(4)由文件内位置与要读的长度计算最末位置,将其与目录中的文件长度比较,超过否?是→(10),否则→(5)也可将参数中的长度修正为目录中的文件长度第六章文件管理(5)根据参数中的位置、长度和目录中的映射信息,确定块号、块数、块内位移与长度。(多次读盘)(6)根据下一块号读块至内存缓冲区(7)根据块内位移长度取出要读的内容,送至参数中的内存目的地址第六章文件管理(8)根据块内长度或起始块号+块数,确定还读下一块吗?同时确定下一块块号是→(5),否则→(9)(9)正常返回(10)错误返回,返回相应错误号第六章文件管理7.写文件8.文件连接(LINK)9.复制文件10.目录的操作第六章文件管理6.2文件的逻辑结构对于任何一个文件,都存在着以下两种形式的结构(1)文件的逻辑结构从用户角度看文件,研究文件的组织形式(2)文件的物理结构,又称为文件的存储结构,是指文件在外存上的存储组织形式。第六章文件管理1.流式文件:构成文件的基本单位是字符,文件是有逻辑意义的、无结构的一串字符的集合。文件:一个无结构字节序列。大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。其长度以字节为单位。对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。在UNIX系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。第六章文件管理2.记录文件:文件是由若干个记录组成,每个记录有一个键,可按键进行查找。记录式文件是有结构的文件。文件:一个固定长度记录的序列,每条记录有其内部结构(有结构文件)第六章文件管理有结构文件分类(1)定长记录。文件中的纪录长度固定(2)变长记录。文件中的纪录根据数据量大小进行调整(1)顺序文件。由一系列纪录按某种顺序进行排列(2)索引文件。建立一张索引表,并为每个纪录建立一个表项(3)索引顺序文件。为文件建立一张索引表,为每组纪录中的第一个记录设置一个表项。第六章文件管理6.2.2顺序文件1.逻辑记录的排序第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,最先存入的记录作为第一个记录,其次存入的为第二个记录,……依此类推。第二种情况是顺序结构,指文件中的所有记录按关键字(词)排列。可以按关键词的长短从小到大排序,也可以从大到小排序;或按其英文字母顺序排序。文件中的记录可以是任意顺序的第六章文件管理读一个文件的时候,设置一个读指针rptr,令其指向下一个记录的首地址,读完一个记录执行一次后移。Rptr=rptr+L;写文件操作同上,只是需要设置一个写指针wptr;对于变长的记录顺序文件,读写文件同上,只是在进行指针加的长度应该是刚刚读或写的数据记录的长度L1.第六章文件管理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定长和变长记录文件第六章文件管理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.直接文件对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。