资源描述
,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版副标题样式,2024/11/28,70,HYM,计算机,概论,4-6 文件管理,文件及文件系统,文件的组织形式,文件存取形式,文件目录,4.6.5 文件安全,4.6.1.1,文件分类,1.,文件的定义,文件是计算机系统中信息存放的一种组织形式,可分为文件说明和文件内容两部分。目前尚无严格的定义,下面给出两种有代表性的解释:,(,1,)文件是具有标识符的相关字符流的集合。,这种解释说明文件是直接由字符序列组成的,这是一种无结构的文件,或称流式文件。最小存取信息单位是字节。,4.6.1,文件及文件系统,4.6.1.1,文件分类,1.,文件的定义,(2)文件是具有标识符的一组相关记录(一个有意义的信息单位)的集合。,这种解释说明文件是由若干记录组成,而记录则是由一组相关信息项组成。记录是对这种文件进行存取操作的基本单位。,有标识的记录称为有键记录,无标识的记录称为无键记录。键一般为字母、数字组成的字符串。,一个文件中各个记录的长度可以相等,也可以不相等。,4.6.1,文件及文件系统,2.,文件命名,一般情况下,一个文件是一组逻辑上具有完整意义的信息集合,并赋以一个文件名。,文件名由用户给定,它是由字母或数字组成的一个字符串,用来标识文件,。,文件名是文件存在的标识,操作系统根据文件名来对其进行控制和管理。,各个操作系统的文件命名规则略有不同,即文件名的格式和长度因系统而异。,4.6.1,文件及文件系统,2.,文件命名,一般来说,文件名由文件名和扩展名两部分组成,中间用“,”,隔开。它们都是字母或数字组成的字母数字串。,扩展名也称为文件后缀,利用扩展名可以区分文件的属性。,文件是一个抽象机制,它提供了一种把信息保存在存储介质上,而且便于以后存取的方法,用户不必关心实现细节。,例子:.bak .java .c .cs .gif,.mp3 .hlp .html .mpg .rmvb,.ps .doc .txt .zip .rar,4.6.1,文件及文件系统,3.,文件的分类,(1)以文件的用途分类,系统文件,:由操作系统及其他系统程序和数据组成的文件。这种文件不对用户开放,仅供系统使用,用户只能通过操作系统提供的系统调用来使用它们。,库文件:,是指系统为用户提供的各种标准函数,标准过程和实用程序等。用户只能使用这些文件,而无权对其进行修改。,用户文件:,由用户的信息组成的文件,如源程序文件,数据文件等。这种文件的使用和修改权均属于用户。,4.6.1,文件及文件系统,(2)按文件的操作保护分类,只读文件:,只允许进行读操作,不能进行写操作的文件。,读写文件:,允许文件主和授权用户对其进行读或写操作的文件。,不保护文件:,该类文件对用户来说,不加任何访问限制。,4.6.1,文件及文件系统,(3)按文件信息流向分类,输入文件:,从输入设备上输入的文件,如从键盘输入的文件,只能读入。,输出文件:,从输出设备上输出的文件,如打印机打印出的文件,只能写。,输入,/,输出文件:,既能输入,又能输出的文件,如磁盘上的文件。,4.6.1,文件及文件系统,(4)UNIX系统中的文件分类,普通文件:,指一般的用户文件和系统文件,是无结构、无记录概念的流式文件。,目录文件:,管理和实现文件系统的文件目录项组成的系统文件,对目录文件可以进行与普通文件一样的各种文件操作。,特别文件:,UNIX,系统把每个外设作为一个文件统一管理和使用,并为区别起见,把设备称为特别文件。,4.6.1,文件及文件系统,4.6.1.2,文件的属性,为了对文件进行控制和管理,大多数操作系统都用一组信息来指定文件的类型、操作特性和存取保护等,这组信息称为文件的属性。,4.6.1,文件及文件系统,4.6.1.2,文件的属性,文件的属性虽然不是文件的信息内容,但对于文件的管理和控制是十分重要的。这组属性包括:,文件基本属性(文件名、大小、创建者、修订者,),文件的类型属性,文件的保护属性(只读、读写、只执行,),文件的管理属性(存储位置、是否共享,),文件的控制属性(用何种软件读取、如何读取,),4.6.1,文件及文件系统,4.6.1.3,文件系统,是操作系统中统一管理信息资源的一种软件,管理文件的存储、检索、更新,提供安全可靠的共享和保护手段,并且方便用户使用。,文件系统包括操作系统中与文件管理有关的那部分软件和被管理的文件,以及管理所需要的一些数据结构的总体。,4.6.1,文件及文件系统,4.6.1.3 文件系统,文件系统,功能,(1)统一管理文件的存储空间,实施存储空间的分配与回收,(2)负责文件的存储,(3)实现文件的按名存取,名字空间映射,存储空间,(4)实现文件信息的共享,并提供文件的保护和保密措施,(5)向用户提供一个方便使用的接口(提供对文件系统操作命令,以及提供对文件的操作命令:信息存取、加工等),(6) 提供与I/O的统一接口,4.6.1,文件及文件系统,4.6.2.1,文件的逻辑结构,1.,有结构的记录式文件,它在逻辑上可被看成一组连续记录的集合,即文件是由若干相关记录组成,且对每个记录编上号码,依次为记录,1,、记录,2,、,、记录,n,。,每个记录是一组相关的数据集合,用于描述一个对象某个方面的属性,如年龄、姓名、职务、工资等。,4.6.2,文件的组织形式,记录式文件按照记录长度是否相同,又可分为定长记录文件和不定长记录文件两种。,(,1,)定长记录:文件中所有记录的长度相等。,(,2,)变长记录:文件中记录的长度不相等。,4.6.2,文件的组织形式,2.,无结构的流文件,无结构文件是指文件内部不再划分记录,是由一组相关信息组成的有序字符流,即,流式文件,。其长度直接按字节来计算。,大量的源程序、可执行程序、库函数等均采用无结构的文件形式。在,UNIX,和,Windows,系统中,所有的文件都被看成流式文件。,事实上操作系统不知道或不关心文件中存放的内容是什么,它所见到的都是一个一个的字节。,文件中任何信息的含义都由用户级程序解释。,4.6.2,文件的组织形式,4.6.2.2,文件的物理结构,文件系统以文件的形式保存在计算机的磁盘上,磁盘和内存之间以块为单位进行数据,I/O,转移。每块为一个或多个扇区,扇区的大小通常为,512B,。因此,实现文件系统需要使用磁盘和内存结构。,文件系统在使用之前必须安装。安装通常比较简单,操作系统需要知道磁盘设备的名称以及在哪里安装文件系统。通常,一个磁盘设备可以分为不同的分区,每个分区可以安装不同的操作系统。每个分区的格式在不同的操作系统下有很大的差别,一般由引导块、管理块和数据块三部分组成。,4.6.2,文件的组织形式,4.6.2.2,文件的物理结构,1.,连续结构,连续结构,要求每个文件在磁盘上占用一组连续的块。,文件的连续分配可以用第一块的磁盘地址和连续块的数量来定义。如果文件有,n,块长并从位置,b,开始,那么该文件将占有块,b,、,b+1,、,b+2,、,、,b+n-1,。一个文件目录项包括开始块的地址和该文件所分配区域的长度。,采用连续分配方法可把逻辑文件中的信息顺序地存放到一组邻接的物理盘块中,这样形成的物理文件称为连续文件(或顺序文件)。,4.6.2,文件的组织形式,文件FileA的起始地址为盘块2,长度为3,它占用了盘块2、3和4。文件FileB的起始地址为盘块9,长度为5,其占用的连续块为9、10、11、12和13。,Windows,文件系统硬盘的分配单位?,FAT,(File Allocation Table),4.6.2,文件的组织形式,连续结构的主要优缺点,连续结构的主要优点如下:,顺序访问结构简单。,(2),顺序访问速度快。,连续结构的主要缺点如下:,要求有连续的存储空间。,(2),必须事先知道文件的长度。,4.6.2,文件的组织形式,2.,链表结构,链表结构克服了连续结构的所有缺点。,采用链表结构,每个文件是磁盘块的链表。链表结构采用非连续的物理块来存放文件信息,这些非连续的物理块分布在磁盘的任何地方,它们之间没有顺序关系,其中每个物理块设有一个指针,指向其后续连接的另一个物理块,从而使得存放同一文件的物理块链接成一个串联队列。,采用链表结构的物理文件称为链接文件或串联文件。,4.6.2,文件的组织形式,FAT,(File Allocation Table),4.6.2,文件的组织形式,一个采用链接分配方法的变种是文件分配表(,FAT,)的使用。,每个分区的开始部分用于存储该,FAT,表。磁盘上的每个块都在该表中登记,占用一个表项,该表可以通过块的编号来索引,,FAT,的每个表项含有文件的下一块的块号。,系统首先根据目录文件中的文件第一块的块号去检索,FAT,表,从中得出文件下一个盘块号,以此类推,直到该文件的最后一块,该块对应,FAT,表的值为文件结束标志。,在,FAT,表中,未使用的块用,0,来表示,因此,当一个文件需要分配新的存储空间时,就在,FAT,表中查找第一个标志为,0,的块,用新分配块的块号来替换该条目的值,把该块链接到文件的尾部。,4.6.2,文件的组织形式,4.6.2,文件的组织形式,3.,索引结构,链表结构方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题, 即:,(1) 不能支持高效的直接存取。要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找许多盘块号。,(2) FAT需占用较大的内存空间。,4.6.2,文件的组织形式,3.,索引结构,索引结构要求系统为每个文件建立一张索引表,表中每一栏目指出文件信息所在的逻辑块号和与之对应的物理块号。索引表的物理地址则由文件目录对应的表项给出。这种物理结构形式的文件称为索引文件。,单级索引分配,4.6.2,文件的组织形式,多重索引:,两级索引分配,4.6.2,文件的组织形式,4.6.3.1,顺序存取,顺序存取是最简单的方法。它严格按照文件信息单位排列的顺序依次存取,,后一次存取总是在前一次存取的基础上进行,所以不必给出具体的存取位置,。,当打开文件时,文件的存取指针指向第一个信息单位,如第一个字节或第一个记录,每存取一个信息单位存取指针加1指向下一个信息单位,如此类推。,第i块 间隙 第i+1块,4.6.3,文件存取形式,第i块 间隙 第i+1块,顺序文件的最佳应用场合:某个顺序文件存储在磁带上,在对诸记录进行批量存取时能有效地工作。,在交互应用的场合,如果用户(程序)要求查找或修改单个记录,为此系统便要去逐个地查找诸记录。 这时, 顺序文件所表现出来的性能就可能很差,尤其是当文件较大时,情况更为严重。,顺序文件的另一个缺点是, 如果想增加或删除一个记录, 都比较困难。,4.6.3,文件存取形式,由于顺序文件是顺序存取的,可采用预先缓冲技术来加速文件的输入和输出。,例如,系统可设置一组缓冲区,在用户要求读出记录Ri时,文件系统除读出R,i,外,并提前把R,i+1,,R,i+2,等记录读入缓冲区。,4.6.3,文件存取形式,4.6.3.2,直接存取,直接存取也称随机存取,,,每次存取操作时必须先确定存取的位置。,直接存取方法对磁盘文件适用。这是因为磁盘允许对任意文件块进行随机读和写。对磁带文件不适用。,直接存取文件允许对任意块进行读或写,读写顺序是没有限制的。,4.6.3,文件存取形式,4.6.3.2,直接存取,直接访问文件可立即访问大量的数据信息,因此,随机访问方式主要对大批信息的立即访问,如大型数据库的访问。当接到访问请求时,系统计算出信息所在块的位置,然后直接读取其中的信息。,4.6.3,文件存取形式,柱面,扇区,磁臂,磁头,4.6.3,文件存取形式,其他访问方式-索引方式,对于定长记录文件,如果要查找第i个记录, 可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址: Ai=iL,然而,对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,4.6.3,文件存取形式,1.,文件控制块,从文件管理的角度看,一个文件包括两部分:文件说明和文件体,文件体,指文件本身的信息,它可能是记录式文件或字符流文件。,文件说明,有时也叫,文件控制块(,file control block, FCB,),,它是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性)。,文件控制块是文件存在的标志,,它通常由文件属性信息组成。,4.6.4,文件目录,2.,文件目录,为了对众多的文件进行分门别类的管理,提高文件检索的效率,现代操作系统往往将文件的文件控制块集中在一起进行管理。这种,FCB,的有序集合就称为文件目录,,文件控制块就是其中的目录项(构成文件目录的项目)。,另外,为了实现对文件目录的管理,,通常将文件目录以文件的形式保存在外存,这个文件就叫,目录文件,。,4.6.4,文件目录,2.,文件目录,文件目录具有将文件名转换成该文件在外存的物理位置的功能。,当用户要求存取某个文件时,系统首先查找目录文件,先找到对应的文件目录,然后比较文件名就可以找到所查找文件的文件控制块,再通过,FCB,指出的文件信息就能存取文件的内容。,4.6.4,文件目录,不同的系统,文件目录的组织也不完全相同。,MS-DOS,的目录结构,4.6.4,文件目录,UNIX/Linux,采用了一种比较特殊的目录建立方法,它把文件目录项中的文件名和其他的管理信息分开,后者单独组成一个定长的数据结构,成为索引节点(,i_node,),该索引节点的编号称为索引号,记为,i_node,。于是,文件目录项中仅剩下,14,个字节的文件名和两个字节的,i_node,。,4.6.4,文件目录,4.6.4.1,单级目录,单级目录是最简单的目录结构。在这种组织方式下,全部文件都登记在同一目录中。,其特点是简单、易于理解和实现,但也存在以下的缺陷:查找速度慢、不允许重名和不便于文件的共享。,4.6.4,文件目录,4.6.4.2,两级目录,每个用户使用一个相对独立的目录,在所有用户的目录上层再建一层目录来管理各个用户目录。,二级目录结构把文件目录分成二级,第一级称为主目录,第二级称为子目录或次目录。,系统允许每个用户有一个子目录。也称为,用户目录,。,二级目录结构有效地解决文件重名的问题,,不同用户的文件,使用相同名字也不会导致混乱,。,Windows,下的不同用户,4.6.4,文件目录,4.6.4,文件目录,两级目录,4.6.4,文件目录,两级目录,具有以下优点:,提高了检索目录的速度,(2),在不同的用户目录中, 可以使用相同的文件名。,(3),不同用户还可使用不同的文件名来访问系统中的同一个共享文件,4.6.4,文件目录,4.6.4.3,树型目录,又称为,多级目录结构,,它是,二级目录结构的扩充,。,这种多层次的目录结构如同一棵倒置的树,主目录就是树根,称为根目录,每一个树枝结点就是一个子目录,每一片树叶描述的一个文件。,4.6.4,文件目录,4.6.4,文件目录,在树形目录结构中,一个文件的全名将包括从根目录开始到文件为止的通路上遇到的所有子目录路径。,各子目录名之间用正斜线“,/”,或反斜线“,”,隔开,,其中,,子目录名组成的部分又称为路径名。,系统内的每个文件都有惟一的路径名。,路径名是从根经过所有子目录再到指定文件的路径。,4.6.4,文件目录,当前目录(Current Directory),当一个文件系统含有许多级时,每访问一个文件,都要使用从树根开始直到树叶(数据文件)为止的、包括各中间结点(目录)名的全路径名。 这是相当麻烦的事,同时由于一个进程运行时所访问的文件,大多仅局限于某个范围,因而非常不便。 基于这一点,可为每个进程设置一个“当前目录”,又称为“工作目录”。进程对各文件的访问都相对于“当前目录”而进行。此时各文件所使用的路径名, 只需从当前目录开始, 逐级经过中间的目录文件,最后到达要访问的数据文件。,4.6.4,文件目录,路径名有两种形式:绝对路径名和相对路径名,绝对路径名从根目录开始并给出路径上的目录名直到指定的文件,而相对路径名从当前目录开始定义一个路径。,Windows,中如何显示文件,绝对路径名?,4.6.4,文件目录,目录的实现,1.,线性表,目录文件由目录项构成一个线性表,每个目录项包括文件名和指向数据块的指针。,当需要创建一个新文件时,系统必须首先搜索目录文件以确定有没有同名文件的存在,然后把新文件的目录项添加到目录的末尾。,删除一个文件时,系统根据给定的文件名来搜索文件目录。找到该文件所在目录项后,释放分配给该文件的磁盘空间,并将相应的目录项删除。,目录查询技术,4.6.4,文件目录,1.,线性表,查找/usr/ast/mbox的步骤,4.6.4,文件目录,2.,哈希表,用于实现文件目录的另一种数据结构是哈希表。采用这种方法时,除了使用线性列表来存放目录项以外,还使用了哈希表。,哈希表,根据文件名计算出一个哈希值,并返回一个指向线性列表中元素的指针。,因此,它大大降低了目录搜索时间,插入和删除也很方便,不过需要一些措施来避免冲突(,collision,)(两个不同的文件名哈希到同一位置)。,哈希表的最大困难在于其大小通常是固定的,而且哈希函数也依赖于哈希表的大小。,4.6.4,文件目录,2.,哈希表,4.6.4,文件目录,1.,全量转储,系统周期性地进行全量转储。,当系统失效时,使用备份的磁带或磁盘,将文件系统恢复到上次转储时的状态。,4.6.5,文件安全,2.,增量转储,增量转储是仅将自上次转储后新创建的或修改过的文件写入磁带或磁盘的转储方法。,4.6.5,文件安全,文件操作,创建文件:,写文件:,读文件:,文件定位:,删除文件:,截短文件:,文件和目录操作,大多数文件操作都涉及到为给定文件搜索相关目录条目的操作。为了避免这种不断的搜索操作,提高文件操作的效率,许多系统要求在首次使用文件时,,必须使用系统调用,open,来显式地打开文件。,文件和目录操作,文件的“打开”和“关闭”操作,文件和目录操作,文件的“打开”和“关闭”操作,所谓“打开”,是指系统将指名文件的属性,(,包括该文件在外存上的物理位置,),从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号,(,或称为索引,),返回给用户。,操作系统维护着一个包含所有打开文件的信息表(打开文件表,,open file table,)。,当用户再要求,当需要进行一个文件操作时,可通过打开文件表的一个索引来指定文件,而不需要搜索整个文件目录。,不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。,有的系统在首次使用文件时,会隐式地打开它,在打开文件的作业或程序终止时会自动关闭它。然而,绝大多数操作系统要求程序员在使用文件之前,显式地打开它。,如果用户已不再需要对该文件实施相应的操作时,可利用,“关闭”,(close),系统调用,来关闭此文件,,OS,将会把该文件从,打开文件表,中的表目上删除掉。,文件和目录操作,文件的“打开”和“关闭”操作,文件和目录操作,其它文件操作,为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类:,最常用的一类是有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者,(,文件主,),、改变对文件的访问权,以及查询文件的状态,(,包括文件类型、大小和拥有者以及对文件的访问权等,),;,另一类是有关目录的,如创建一个目录,删除一个目录,改变当前目录和工作目录等;,此外,,还有用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。,目录操作,创建目录:,被创建的新目录除了目录项“,”,(表示该目录本身)和“,”,(表示父目录)以外,其内容为空。目录项“,”,和“,”,是系统自动放在该目录中的。,创建目录时,,系统首先根据调用者提供的路径名来进行目录检索。如果存在同名的目录文件,则返回出错信息,创建失败。否则,为新目分配磁盘空间和控制结构,并进行初始化,将新目录文件对应的目录项添加到父目录中。,删除目录:,文件和目录操作,目录操作,文件和目录操作,(1) 不删除非空目录。,当目录(文件)不空时, 不能将其删除,而为了删除一个非空目录,必须先删除目录中的所有文件,使之先成为空目录, 后再予以删除。如果目录中还包含有子目录,还必须采取递归调用方式来将其删除, 在MS-DOS中就是采用这种删除方式。,(2) 可删除非空目录,。当要删除一目录时,如果在该目录中还包含有文件,则目录中的所有文件和子目录也同时被删除。,删除目录:,空闲空间的管理,1,、空闲文件目录:,简单的空闲块管理方法就是把文件存储设备中的空闲块的块号统一放在一个称为空闲文件目录的物理块中。其中空闲文件目录的每个表项对应一个由多个空闲块构成的空闲区,它包括空闲块个数,空闲块号和第一个空闲块号等。,文件系统的实现,空闲盘块表,文件系统的实现,存储空间的分配与回收。,空闲区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。同时修改空闲表。,系统在对用户所释放的存储空间进行回收时,也采取类似于内存回收的方法, 即要,考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。,空闲盘块表,2,、空闲块链:,空闲块链是一种较常用的空闲块管理方法。,空闲块链把文件存储设备上的所有空闲块链接在一起,当申请者需要空闲块时,分配程序从链头开始摘取所需要的空闲块,然后调整链首指针。,反之,当回收空闲块时,把释放的空闲块逐个插入链尾上。,文件系统的实现,3.,位示图:,系统首先从内存中画出若干个字节,为每个文件存储设备建立一张位示图。这张位示图反映每个文件存储设备的使用情况。在位示图中,每个文件存储设备的物理块都对应一个比特位。如果该位为“1”,则表示所对应的块是空闲块;反之,如果该位为“0”,则表示所对应的块已被分配出去。,文件系统的实现,位示图,文件系统的实现,位示图,盘块的分配,(1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位(“0”表示空闲时)。,(2) 将所找到的一个或一组二进制位, 转换成与之相应的盘块号。假定找到的其值为“0”的二进制位,位于位示的第i行、第j列,则其相应的盘块号应按下式计算:,b=n(i-1)+j,式中, n代表每行的位数。,(3) 修改位示图, 令mapi,j=1。,文件系统的实现,位示图,盘块的回收,(1) 将回收盘块的盘块号转换成位示图中的行号和列号。 转换公式为:,i=(b-1)DIV n+1,j=(b-1)MOD n+1,(2) 修改位示图。 令map i,j=1。,文件、文件名、文件属性、结构文件、流式文件,文件的顺序访问和随机访问,文件目录、文件路径,磁盘存储空间的分配,Thank You Very Much!,重点概念和内容提示,4.6.4.1,文件系统的结构,获得结果,用户存取要求,用户接口,符号文件系统,存取控制验证,逻辑文件系统,物理文件系统,设备和分配策略模块,I/O,控制系统,物理介质,基本文件系统,文件的物理结构,4.6.2,文件的组织形式,
展开阅读全文