操作系统——文件管理.ppt
第七章 文 件 管 理,7.1 文件和文件系统7.2 文件的逻辑结构 7.3 文件目录7.4 文件共享7.5 文件保护,7.1 文件和文件系统,7.1.1 文件、记录和数据项,1.数据项,(1)基本数据项。这是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。它的命名往往与其属性一致。例如,用于描述一个学生的基本数据项有:学号、姓名、年龄、所在班级等。,(2)组合数据项。它是由若干个基本数据项组成的,简称组项。例如,经理便是个组项,它由正经理和副经理两个基本项组成。又如,工资也是个组项,它可由基本工资、工龄工资和奖励工资等基本项所组成。基本数据项除了数据名外,还应有数据类型。因为基本项仅是描述某个对象的属性,根据属性的不同,需要用不同的数据类型来描述。例如,在描述学生的学号时,应使用整数;描述学生的姓名则应使用字符串(含汉字);描述性别时,可用逻辑变量或汉字。可见,由数据项的名字和类型两者共同定义了一个数据项的“型”。而表征一个实体在数据项上的数据则称为“值”。例如,学号/30211、姓名/王有年、性别/男等。,2.记录 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。而一个对象,由于他所处的环境不同可把他作为不同的对象。例如,一个学生,当把他作为班上的一名学生时,对他的描述应使用学号、姓名、年龄及所在系班,也可能还包括他所学过的课程的名称、成绩等数据项。但若把学生作为一个医疗对象时,对他描述的数据项则应使用诸如病历号、姓名、性别、出生年月、身高、体重、血压及病史等项。,3.文件,文件是指由创建者所定义的、具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。例如,可以将一个班的学生记录作为一个文件。一个文件必须要有一个文件名,它通常是由一串ASCII码或(和)汉字构成,名字的长度因系统不同而异。如在有的系统中把名字规定为8个字符,而在有的系统中又规定可用14个字符。,属性可以包括:文件类型。(2)文件长度。(3)文件的物理位置。(4)文件的建立时间。,图 7-1 文件、记录和数据项之间的层次关系,7.1.2 文件名和类型,1.文件名和扩展名,文件名命名规则(2)扩展名文件的类型,2.文件类型,按用途分类系统文件。(2)用户文件。(3)库文件。,2)按文件中数据的形式分类,源文件。(2)目标文件。(3)可执行文件。,3)按存取控制属性分类,只执行文件。(2)只读文件。(3)读写文件。,4)按组织形式和处理方式分类,普通文件。(2)目录文件。(3)特殊文件。,7.1.3.文件系统的层次结构,图 7-2 文件系统模型,1.对象及其属性 文件管理系统管理的对象有:文件。它作为文件管理的直接对象。目录。为了方便用户对文件的存取和检索,在文件系统中必须配置目录。对目录的组织和管理是方便用户和提高对文件存取速度的关键。磁盘(磁带)存储空间。文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。,2.对对象操纵和管理的软件集合 这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。,3.文件系统的接口 为方便用户使用文件系统,文件系统通常向用户提供两种类型的接口:(1)命令接口。这是指作为用户与文件系统交互的接口。用户可通过键盘终端键入命令,取得文件系统的服务。(2)程序接口。这是指作为用户程序与文件系统的接口。用户程序可通过系统调用来取得文件系统的服务。,7.1.4 文件操作,创建文件。(2)删除文件。(3)读文件。(4)写文件。(5)截断文件。(6)设置文件的读/写位置。,2.文件的“打开”和“关闭”操作,所谓“打开”,是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。以后,当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。如果用户已不再需要对该文件实施相应的操作时,可利用“关闭”(close)系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。,3.其它文件操作 为了方便用户使用文件,通常,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类:最常用的一类是有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者(文件主)、改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等);另一类是有关目录的,如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。,7.2 文件的逻辑结构,对于任何一个文件,都存在着以下两种形式的结构:(1)文件的逻辑结构(File Logical Structure)。(2)文件的物理结构,又称为文件的存储结构,是指文件在外存上的存储组织形式。,7.2.1 文件逻辑结构的类型,按文件是否有结构分类1)有结构文件记录式文件定长记录。(2)变长记录。,2)无结构文件 如果说大量的数据结构和数据库,是采用有结构的文件形式的话,则大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。其长度以字节为单位。对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。在UNIX系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。,2.按文件的组织方式分类顺序文件。(2)索引文件。(3)索引顺序文件。,7.2.2 顺序文件,1.顺序文件的排列方式,第一种是串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列,最先存入的记录作为第一个记录,其次存入的为第二个记录,依此类推。第二种情况是顺序结构,指文件中的所有记录按关键字(词)排列。可以按关键词的长短从小到大排序,也可以从大到小排序;或按其英文字母顺序排序。,2.顺序文件的优缺点,顺序文件的最佳应用场合,是在对诸记录进行批量存取时,即每次要读或写一大批记录。此时,对顺序文件的存取效率是所有逻辑文件中最高的;此外,也只有顺序文件才能存储在磁带上,并能有效地工作。在交互应用的场合,如果用户(程序)要求查找或修改单个记录,为此系统便要去逐个地查找诸记录。这时,顺序文件所表现出来的性能就可能很差,尤其是当文件较大时,情况更为严重。例如,有一个含有104个记录的顺序文件,如果对它采用顺序查找法去查找一个指定的记录,则平均需要查找5103个记录;如果是可变长记录的顺序文件,则为查找一个记录所需付出的开销将更大,这就限制了顺序文件的长度。,顺序文件的另一个缺点是,如果想增加或删除一个记录,都比较困难。为了解决这一问题,可以为顺序文件配置一个运行记录文件(Log File)或称为事务文件(Transaction File),把试图增加、删除或修改的信息记录于其中,规定每隔一定时间,例如4小时,将运行记录文件与原来的主文件加以合并,产生一个按关键字排序的新文件。,7.2.3 记录寻址,图 7-3 定长和变长记录文件,1.隐式寻址方式,对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址:Ai=iL 然而,对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,然后才能按下式计算出第i个记录的首址。假定在每个记录前用一个字节指明该记录的长度,则,2.显式寻址方式,图 7-4 索引文件的组织,7.2.4 索引文件,7.2.4 索引顺序文件,图 7-5 索引顺序文件,7.2.5 直接文件和哈希文件,1.直接文件,对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址。这种由记录键值到记录物理地址的转换被称为键值转换(Key to address transformation)。组织直接文件的关键,在于用什么方法进行从记录值到物理地址的转换。,2.哈希(Hash)文件,图 7-6 Hash文件的逻辑结构,7.3 文 件 目 录,对目录管理的要求如下:实现“按名存取”。(2)提高对目录的检索速度。(3)文件共享。(4)允许文件重名。,7.3.1 文件控制块和索引结点,文件控制块 基本信息类 文件名;文件物理位置;文件逻辑结构;文件的物理结构(2)存取控制信息类(3)使用信息类,图 7-7 MS-DOS的文件控制块,2.索引结点,1)索引结点的引入,图 7-8 UNIX的文件目录,2)磁盘索引结点,文件主标识符(2)文件类型(3)文件存取权限(4)文件物理地址(5)文件长度(6)文件连接计数(7)文件存取时间,3)内存索引结点(1)索引结点编号。用于标识内存索引结点。(2)状态。指示i结点是否上锁或被修改。(3)访问计数。每当有一进程要访问此i结点时,将该访问计数加1,访问完再减1。(4)文件所属文件系统的逻辑设备号。(5)链接指针。设置有分别指向空闲链表和散列队列的指针。,7.3.2 目录结构,1.单级目录结构,图7-9 单级文件目录,单级目录的优点是简单且能实现目录管理的基本功能按名存取,但却存在下述一些缺点:(1)查找速度慢(2)不允许重名(3)不便于实现文件共享,2.两级目录,图 7-10 两级目录结构,具有以下优点:提高了检索目录的速度(2)在不同的用户目录中,可以使用相同的文件名。(3)不同用户还可使用不同的文件名来访问系统中的同一个共享文件,7.3.3 树形结构目录,1.树形目录,图 7-11 多级目录结构,1)路径名 在树形目录结构中,从根目录到任何数据文件,都只有一条惟一的通路。在该路径上从树的根(即主目录)开始,把全部目录文件名与数据文件名,依次地用“/”连接起来,即构成该数据文件的路径名(path name)。系统中的每一个文件都有惟一的路径名。例如,在图 7-11 中用户B为访问文件J,应使用其路径名/B/F/J来访问。,2.路径名和当前目录,2)当前目录(Current Directory)。当一个文件系统含有许多级时,每访问一个文件,都要使用从树根开始直到树叶(数据文件)为止的、包括各中间结点(目录)名的全路径名。这是相当麻烦的事,同时由于一个进程运行时所访问的文件,大多仅局限于某个范围,因而非常不便。基于这一点,可为每个进程设置一个“当前目录”,又称为“工作目录”。,进程对各文件的访问都相对于“当前目录”而进行。此时各文件所使用的路径名,只需从当前目录开始,逐级经过中间的目录文件,最后到达要访问的数据文件。把这一路径上的全部目录文件名与数据文件名用“/”连接形成路径名,如用户B的当前目录是F,则此时文件J的相对路径名仅是J本身。这样,把从当前目录开始直到数据文件为止所构成的路径名,称为相对路径名(relative path name);而把从树根开始的路径名称为绝对路径名(absolute path name)。,3.增加和删除目录,(1)不删除非空目录。当目录(文件)不空时,不能将其删除,而为了删除一个非空目录,必须先删除目录中的所有文件,使之先成为空目录,后再予以删除。如果目录中还包含有子目录,还必须采取递归调用方式来将其删除,在MS-DOS中就是采用这种删除方式。(2)可删除非空目录。当要删除一目录时,如果在该目录中还包含有文件,则目录中的所有文件和子目录也同时被删除。,7.3.4 目录查询技术,1.线性检索法,图 7-12 查找/usr/ast/mbox的步骤,2.Hash方法,一种处理此“冲突”的有效规则是:(1)在利用Hash法索引查找目录时,如果目录表中相应的目录项是空的,则表示系统中并无指定文件。(2)如果目录项中的文件名与指定文件名相匹配,则表示该目录项正是所要寻找的文件所对应的目录项,故而可从中找到该文件所在的物理地址。(3)如果在目录表的相应目录项中的文件名与指定文件名并不匹配,则表示发生了“冲突”,此时须将其Hash值再加上一个常数(该常数应与目录的长度值互质),形成新的索引值,再返回到第一步重新开始查找。,