第七章:文件管理赵恒主讲hzhaoedu@163.com27.3文件目录通常,在计算机系统中,大量的文件被存储在磁盘上。为了对存储在磁盘上的众多文件进行有效的控制和管理,必须对它们加以妥善组织。这种组织是通过文件目录来实现的,文件目录是一种数据结构,用来标识文件系统中的文件及其物理地址,供检索时使用。OperatingSystem目录管理的要求:实现“按名存取”文件系统最基本的功能。提高对目录的检索速度加快目录检索速度,从而提高文件存取速度。文件共享一份文件副本供不同用户使用。允许文件重名允许不同用户对不同文件取相同的名字。4为了对众多的文件进行分门别类的管理,提高文件检索的效率,现代操作系统往往将文件的文件控制块集中在一起进行管理。这种FCB的有序集合就称为文件目录,文件控制块就是其中的目录项(构成文件目录的项目)。另外,为了实现对文件目录的管理,通常将文件目录以文件的形式保存在外存,这个文件就叫目录文件。7.3.1文件控制块和文件目录5而文件目录信息也叫文件控制块(filecontrolblock,FCB),它是操作系统为管理文件而设置的数据结构,存放了为管理文件所需的所有有关信息(文件属性)。文件控制块是文件存在的标志,它通常由文件属性信息组成。OperatingSystem文件控制块中的信息基本信息类文件名文件的物理位置文件的逻辑结构文件的物理结构文件控制信息类文件拥有者权限核准用户权限一般用户权限使用信息类文件建立日期文件修改日期7FCB的外部表现:文件的属性OperatingSystem索引结点索引结点的引入文件目录通常放在磁盘上,当文件很多时,占用大量磁盘空间。检索文件过程中,只需使用文件名,而不用其他信息。将文件描述信息单独形成一个数据结构,称为索引结点,也称为i结点。在文件目录中的每个目录项,仅包含文件名和指向索引结点的指针。引入索引结点后,使文件的目录项更小,占用磁盘空间少,检索速度加快。OperatingSystem索引结点的引入UNIX的文件目录文件名索引结点编号文件名1文件名214B2BOperatingSystem若每个FCB为64B,盘块大小为1KB,则每盘块可存放16个FCB,若某文件系统有640个FCB,需占用40个盘块。若按前述方法只存文件名和索引节点号,每个目目录项占16B,每盘块可存64个目录项,640个FCB只占10个盘块,查找目录时间大大缩短。索引结点的引入OperatingSystem磁盘索引结点:存放在磁盘文件主标识符文件类型文件存取权限文件物理地址:13个地址项文件长度文件连接计数:共享文件存取时间磁盘索引节点:OperatingSystem每个文件有惟一的磁盘索引结点,它主要包括以下内容:①文件主标识符:拥有该文件的个人或小组的标识符。②文件类型:包括正规文件、目录文件、或特别文件。③文件存取权限:指个类用户对文件的存取权限。④文件物理地址:每个索引结点中含有13个地址项。⑤文件长度:指以字节为单位的文件长度。⑥文件连接计数:表明在本文件系统中,所有指向该文件名的指针计数。⑦文件存取时间:指出本文件最近被进程存取的时间,最近被修改的时间及索引结点最近被修改的时间。OperatingSystem内存索引节点:内存索引结点:存放在内存索引结点编号状态:指示i结点是否上锁或被修改访问计数:进程访问此i结点数文件所属文件系统的逻辑设备号链接指针:设置有分别指向空闲链表和散列队列的指针OperatingSystem存放在内存中的索引结点,当文件被打开时,要将磁盘索引结点拷贝到内存的索引结点中,便于以后使用。在内存索引结点中,增加了以下内容:(1)索引结点编号。(2)状态。指示i结点是否上锁或被修改。(3)访问计数。每当有一进程要访问此i结点时,将该访问计数加1,访问完再减1(4)文件所属文件系统的逻辑设备号(5)链接指针。设置有分别指向空闲链表和散列队列的指针。157.3.2文件目录为了方便用户的使用,提高文件系统的效率,也必须对系统内的所有文件目录进行组织。在现代操作系统中,目录的基本组织方式有:一级目录二级目录树形目录161、一级目录一级目录是最简单的目录结构。在这种组织方式下,全部文件都登记在同一目录中。17创建、删除文件创建文件查看所有的目录项,看新文件名是否唯一;再从目录中找出一空目录项,填入属性,状态位置1。删除文件找到该文件物理地址,对它们进行回收;清除其所占用的目录项。18单级目录结构的优、缺点优点:简单,能实现目录管理的基本功能-按名存取。缺点:查找速度慢;不允许重名;不便于实现文件共享。192、二级目录为改变一级目录文件目录命名冲突,并提高对目录文件检索速度而将目录分为两级:一级称为主文件目录,给出用户名,用户子目录所在的物理位置;二级称为用户文件目录,给出该用户所有文件的FCB。文件主目录(MFD)的表目按用户分,每个用户有一个用户文件目录(UFD)。202、两级目录在二级目录结构中,用户引用特定的文件时,系统只需搜索他自己的UFD,因此,不同用户可拥有具有相同名称的文件,只要每个UFD内的所有文件名称惟一即可。当用户创建文件时,操作系统也只搜索该用户的UFD以确定具有相同名字的文件是否存在。当删除文件时,操作系统只在局部UFD中对其进行搜索,因此,它并不会删除另一个用户的具有相同名称的文件。212、两级目录用户名WangZhangGao指向子目录指针Wang用户目录AlphaTestAlphaTestReportTestZhang用户目录ReportTestGao用户目录BetaDeviceMisxBetaDeviceMisxOperatingSystem两级目录的优点提高了检索目录的速度。在不同的用户目录中,可以使用相同的文件名。不同用户还可使用不同的文件名来访问系统中的同一个共享文件。23例题文件的二级目录结构由______和______组成。A.根目录B.子目录C.主文件目录D.用户文件目录E.当前目录OperatingSystem目录文件:由文件的目录项组成的文件。多级目录结构多级目录结构又称为树形目录结构。主目录称为根目录,数据文件称为树叶,其他目录作为树的结点。为提高文件系统的灵活性,允许一个目录文件中的目录项既作为目录文件的FCB,又是数据文件的FCB。根据这个递归定义就形成了一个倒立的树的结构。对于一棵树,它有一个树根(只有一个,根目录),在树根上可以长树叶(一般文件),也可以长树枝(子目录文件);对于每个树技又可以长树枝,也可以长树叶。7.3.3树型目录257.3.3树型目录267.3.3树型目录在树形目录结构中,一个文件的全名将包括从根目录开始到文件为止的通路上遇到的所有子目录路径。各子目录名之间用正斜线“/”或反斜线“\”隔开,其中,子目录名组成的部分又称为路径名。277.3.3树型目录系统内的每个文件都有惟一的路径名。路径名是从根经过所有子目录再到指定文件的路径。路径名有两种形式:绝对路径名和相对路径名。绝对路径名:从根目录开始并给出路径上的目录名直到指定的文件所构成的路径。相对路径名:从当前目录开始直到数据文件为止所构成的路径。UNIX/Linux也使用相对路径名和绝对路径名来标识文件或目录,只不过文件和目录之间采用“/”来分隔,而不是DOS的“\”。286.2.4树型目录树形目录当前目录/root/spell/mail请问first的相对路径和绝对路径分别是什么?297.3.3树型目录在上图所示的树形目录中,如果当前目录是/root/spell/mail,那么相对路径名prt/first和绝对路径名root/spell/mail/prt/first指向相同的文件。30增加、删除目录在树型结构目录中,用户可为自己建立UPD,并可以再创建子目录。对于一个已不需要的目录,可按如下方法删除:目录为空-删除该目录,置其上级目录中对应目录项为空;目录不空-先删除目录中文件,再删除目录;所有文件和子目录同时被删除。317.3.3树型目录的特点多级目录结构与前两种结构相比,有以下优点:1.层次清楚2.解决了文件重名问题3.查找速度快32华中科技大学2000年文件路径是指()A文件名和文件扩展名B一系列的目录文件和该文件的文件名C从根目录到该文件所经历的路径中各符号的集合D目录文件名和文件名的集合答案:COperatingSystem目录查询技术线性检索法查找/usr/ast/mbox的步骤OperatingSystem目录查询技术Hash法系统利用用户提供的文件名并将它变换为文件目录的索引值,再利用该索引值到目录中去查找Hash法中的冲突处理方法在利用Hash法索引查找目录时,如果目录表中相应的目录项是空的,则表示系统中并无指定文件如果目录项中的文件名与指定文件名相匹配,则表示该目录项正是所要寻找的文件所对应的目录项,故而可从中找到该文件所在的物理地址如果在目录表的相应目录项中的文件名与指定文件名并不匹配,此时须将其Hash值再加上一个常数形成新的索引值,再返回到第一步重新开始查找357.4.6文件的共享、保护所谓文件共享指系统允许多个用户或进程共享同一份文件。文件共享不仅是完成共同的任务的多个用户所必需的,更重要的是避免了同一个文件保存多个副本所造成的外存空间的浪费。OperatingSystem文件共享与文件保护基于索引结点的共享方式利用符号链实现文件共享文件的保护机制OperatingSystem基于索引结点的共享方式文件共享形式与目的定义:系统应允许多个用户共享同一份文件,在系统中只保留一份共享文件的备份。共享形式被多个用户使用,由存取权限控制。被多个程序使用,但各用自己的读写指针。被多个程序使用,但共享读写指针。多个用户用相同或不同的名字来访问同一文件。目的:节省时间和存储空间,减少了用户工作量;进程间通过文件交换信息。OperatingSystem基于索引结点的共享方式AABBBBBCCCCC根目录?CCCOperatingSystem基于索引结点的共享方式文件共享的实现建立值班目录由系统目录实现对文件的共享。用户通过全路径名共享地访问这些文件。采用链访技术对要共享的文件进行连接:通过“连接(Link)”命令,在用户自己的目录项中对要共享的文件建立起相应的表目,即建立两个文件的等价关系。OperatingSystem基于索引结点的共享方式基于索引结点共享将诸如文件的物理地址和其它文件属性等信息放在索引结点中,在文件目录中只设置文件名及指向相应索引结点的指针,另外在索引结点中增加链接计数count,表示共享的用户数,删除时必须count=0,方可。OperatingSystem基于索引结点的共享方式Wang用户文件目录TestrLee用户文件目录Testrcount=2文件物理地址索引结点Test基于索引结点的共享方式OperatingSystem基于索引结点的共享方式C的目录owner=ccount=1链接前C的目录owner=ccount=2链接后B的目录B的目录owner=ccount=1拥有者删除文件后进程B链接前后的情况OperatingSystem文件共享与文件保护基于索引结点的共享方式利用符号链实现文件共享文件的保护机制OperatingSystem利用符号链实现文件共享为使B能共享C的一个文件F,可以由系统创建一个LINK类型的新文件,也取名为F,以实现B的目录中与文件F的链接。在新文件中只包含被链接文件F的路径名。这种链接方法称为符号链接(SymbolicLinking)在利用符号链方式实现文件共享时,只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户,则只有该文件的路径名,并不拥有指向其索引结点的指针可用于计算机网络上共享文件OperatingSystem利用符号链实现文件共享符号链实现文件