•第5章文件管理•学习目的与要求:•文件管理必须对用户提供文件的按名存取功能,为了实现按名存取,文件管理应该做哪些工作?文件管理怎样管理用户信息的存储和检索,怎样保证文件的安全,文件操作的作用以及用户如何使用文件操作;UNIX系统实现文件管理的特色。•重点:逻辑文件与物理文件的区别;文件目录;基本文件操作;UNIX文件管理。•第一节文件和文件系统•一、文件:是指具有符号名完的一组相关信息的有序集合。它是一种在磁盘上保存信息、而且能方便以后读取的方法。文件用符号名加以标识,这个符号名就被称为“文件名”。•一个文件的文件名是在创建该文件时给出的。很多操作系统采取用句点隔开成两部分的文件名形式,句点后面的部分称为文件的“扩展名”。比如文件名zong.c和cathy.doc中的“.c”、“.doc”就分别是文件“zong”和文件“cathy”的扩展名。扩展名大多含1~3个字符,其作用是标明文件的类型。图1列出了通常使用的扩展名及其意义。•文件的分类:可以从各个不同的角度对文件进行分类。•(1)按文件的性质和用途来分。•系统文件•用户文件•库文件•(2)按文件的保护性质来分•只读文件•读写文件•可执行文件•不保护文件•(3)按照文件的逻辑结构来分•流式文件•记录式文件•(4)按照文件的物理结构来分–连续文件–链接文件–索引文件•(5)按照文件的存取方式来分–顺序存取文件–随机存取文件•按照文件的保护期限,可以把文件分成:临时文件、档案文件、永久文件•按照设备的类型,可以把文件分成:磁盘文件、磁带文件、打印文件•按照文件的内容,可以把文件分成:普通文件、目录文件、特殊文件•文件被存放在大容量的辅助存储器中。当用户需要使用时,就通过文件名把相应的文件读到内存,为此,操作系统中就必须要有与文件管理有关的软件。•文件系统:是指与文件管理有关的那部分软件、被管理的文件以及管理文件所需要的数据结构(如目录、索引表等)的总体。•从用户使用角度来看,文件系统主要是实现对文件的¡°按名存取¡±的原则。它具有如下特点:»使用简单方便»文件共享方便»文件安全可靠•从系统管理的角度看,文件系统主要实现对存放文件的存储空间的组织、分配、信息的传输,并对已存信息进行检索、共享和保护等管理。•总之,文件系统要解决如下问题:文件的结构及有关存取方法、文件的目录结构和目录检索、存储空间的管理、文件的共享、存取控制系统可靠性等。•二、文件系统由哪些部分组成?•文件目录•文件的组织•文件存储空间的管理•文件操作•文件的安全措施•第二节文件的存储介质•我们把可用来记录信息的磁带、硬磁盘组、软磁盘片、光盘,卡片等称为存储介质,存储介质的物理单位定义为卷;•存储介质上可连续存储信息的一个区域称为块,或称为物理记录。•简单介绍磁带和磁盘•第三节文件的存取方式文件的存取方式从对文件信息的存取次序考虑,存取方式可分为两类:顺序存取和随机存取。顺序存取是指对文件中的信息按逻辑顺序依次进行读写的存取方式;随机存取是指对文件中的信息不一定要按顺序,而是可以按任意的次序随机地读写文件中的信息。•记录式文件:顺序存取方式,严格按照记录的逻辑排列次序存取每个记录。如果当前取记录Ri,则下次自动确定要读取的记录Ri+1。•随机存取必须允许用户根据记录编号来存取文件中的任意一个记录,不管上次存取了哪一个记录。•流式文件:顺序存取和随机存取都有和记录式文件类似的情况,同时,还需要每次存取之前必须指明要读写字符的数目。•文件存取方法密切地依赖于文件的物理结构和文件的存储设备的特性。目前,文件的存储设备主要是磁带和磁盘。•磁带:是一种典型的顺序存取设备,这种设备只有在前面的物理块被存取访问之后,才能存取后续物理块的内容。存取速度较慢,现在主要用于后备存储。它总是从磁头的当前位置开始读写磁带上的信息。当磁头读写了第i块的信息后,走过其后的间隙就到达了第i+1块的位置。当磁带机继续工作时,一定是读写第i+1块的信息。所以,对存储在磁带上的文件,一般均采用顺序存取的方式。•磁盘:磁盘机是一种可按指定的块地址进行信息存取的设备。磁盘上的每一个块都有确定的位置和一个唯一的地址,地址用“柱面号、磁头号、扇区号”三个参数表示。磁盘机能根据给定的地址带动读写磁头到过指定柱面后,让指定的磁头存取指定扇区上的信息。所以,磁盘机能随时读写任何一块的信息,具有随机存取的功能。•磁盘容量大、速度快,是大、中、小型和微型机上主要文件存储器。•存储设备、文件结构存取方法之间的关系•第四节文件目录文件目录•文件系统的基本任务之一就是负责编排、维护和检索文件目录。•文件控制块(FCB):用户对文件是“按名存取”。所以用户首先要创建文件,为它命名。以后对该文件的读、写以至最后删除它,都要用到文件名。为了便于对文件进行控制和管理。在文件系统内部,给每个文件设置一个文件控制块,这种数据结构通常由下列信息项组成:–(1)文件名—符号文件名,如file6、mydata、m1.c等。–(2)文件类型---指明文件的属性,是普通文件、还是目录文件、特别文件,是系统文件还是用户文件等。•(3)位置——指针,它指向存放文件的设备和该文件在设备上的位置。•(4)大小——当前文件的大小(以字节、字或块为单位)和允许的最大值。•(6)保护信息——对文件读、写及执行等操作的控制权限标志。•(6)使用计数——表示当前有多少个进程在使用(打开了)该文件。•(7)时间——反映出文件有关创建、最后修改、最后使用等情况,可用于文件实施、保护和监控等。•核心利用这种结构对文件实施各种管理。例如,按名存取文件时,先要找到应的控制块,验证权限。仅当存取合法时,才能取得存放文件信息的盘块地址。•文件目录:为了加快对文件的检索,往往把文件控制块集中在一起进行管理。这种文件控制块的有序集合就为文件目录。文件控制块也就是其中的目录项。•文件目录具有将文件名转换成文件在外存位置的功能,就是实现文件名与其存放盘块之间的映射,这是文件目录所提供的最基本的功能。•一、单级目录和二级目录•1.单级目录如果把所有文件的FCB都登记在一个文件目录中,这样由文件名查文件目录项,直接就能够找到所需要的文件,那么就说这种文件目录为一级目录结构。比如,现在有4个用户ZONG、WANG、LING和FANG。ZONG为自己的3个文件起名为test、count和wait;WANG为自己的2个文件起名为help和robit;LING为自己的1个文件起名food;FANG为自己的3个文件起名class、group和data,如图5-15所示。在图中,方框代表一个个文件的目录项,即FCB,其中文字是文件的名字。把它们汇集在一起,就形成系统的目录(这就是根目录);而圆圈代表文件本身。目录项到文件之间有一个箭头,表示FCB中给出了该文件在辅存中的位置,它是文件的指针。•可以看出,一级目录结构是最简单的目录结构。新建一个文件时,就在文件目录中增加一个文件控制块(目录项),把该文件的有关信息填入到FCB中,这样,系统就可以感知到这个文件的存在了;删除一个文件时,就从目录中删去该文件控制块的全部信息,并释放该文件控制块。因此管理起来是很方便的。•缺点:1)查找速度慢:如果系统中的文件很多,那么文件目录就会很大。按文件名去查找一个文件的FCB,平均需要搜索半个目录文件,会耗费很多时间。2)系统里面的文件不能重名。即便是不同的用户,也不能给他们的文件起相同的名字,否则就有可能找不到指定的文件。3)不便于共享:因为各用户对于同一文件可能有不同的命名,而单级目录却要求所有用户用同一个名字来访问同一个文件。•2.二级目录单级目录的主要缺点是无法解决多用户间文件“重名”问题,对此标准的解决办法是为每个用户单独建立一个目录,各管辖自己下属的文件,因为在大型系统中,用户目录是逻辑结构,它们在逻辑上分开,而在物理上全部文件都可放在同一设备上。每个用户有自己的用户文件目录(UFD)。而在主文件目录(MFD)中记载了各个用户的名称,当用户作业开始或用户登录时,要检索主文件目录,找到惟一的用户(或用户编号),再按项中指针的指向找到对应的用户目录。•用户要创建新文件时,系统先找到该用户的用户文件目录,在判定该UFD中没有与新建同名文件的情况下,在UFD中建立一个新的目录,并填入新文件名及有关属性信息。•当用户要删除一个文件时,系统从主文件目录中找到该用户的UFD,再由UFD中找到指定文件夹的目录项,然后回收该文件占用的外存空间,清除该目录项。•优点是:不同用户可以有相同的文件名;提高了检索目录的速度;不同用户可以用不同的文件名来访问系统中同一共享文件。•缺点:由于一个用户与另一个用户隔开,当多个用户要对某些盘区共同操作和共享文件时,这种结构仍不利于文件共享。•3.树形目录为了给某些使用多个文件的用户提供检索方便,以及更好地反映多层次的复杂的文件结构关系,可以把二级目录自然推广到多级目录。在这种结构中,从根开始,一层一层地扩展下去,就形成了一个树形层次结构。在树形结构的文件系统中,只有一个根目录。系统中的每一个文件(包括目录文件本身)都有惟一的路径名,它是从根出发、经子目录、到达指定文件路径分量名的序列。在这种结构中,末端一般是普通的数据文件(图中用圆圈表示)而路径的中间结点是目录文件(用方框表示)•路径名:在树形目录结构中,从根目录到末端的数据文件之间只有一条惟一的路径。这是利用路径名就可惟一表示一个文件。路径名有两种表示形式:绝对路径名和相对路径名。•①绝对路径名:又称全路径名,是指从根目录开始到达所要查找文件的路径名。例如,在LINUX系统中,以“/”表示根目录。从根开始到所需文件,所经历的各个目录或文件称为“节点”。各节点之间以“/”分开。•例如,如图6-12中文件fl.c的绝对路径名是:(root)/usr/ml/prog/fl.c其中usr、ml、prog、fl.c都是路径分量名。根节点root通常被省略掉,但绝对路径名中最左边的“/”不能省略去,以它打头,表示文件路径是从根节点开始的。•②相对路径名:在一个多层次的树形文件目录结构中,如果每次都从根节点开始检索,这是很不方便,多级检索要耗费很多时间。一种捷径是为每个用户设置一个当前目录(又称工作目录),访问某个文件时,就从当前目录开始向下顺次检索。由于当前目录在根目录之下的、靠近多次使用文件的一个目录,所以检索路径缩短,处理速度提高。•如当前目录是ml,那么为了访问fl.c,就可直接从目录ml开始向下按级查找。当用户作业开始或用户登录时,操作系统为用户指定一个当前目录。以后在使用过程中,用户可根据需要随时改变当前目录的定位,系统提供了相应的命令。•绝对路径名从根开始书写,如:/usr/ml/prog/fl.c•相对路径名是从当前目录的下级开始书写,如当前目录是/usr/ml,则有:prog/fl.c在Linux系统中约定,不是以“/”打头的路径就表示相对路径名。•优点:①不同目录下的文件可以重名;②可以贴切地反映系统内文件的分类情况。③利用层次结构关系,便于制定保护文件的权限,有利于文件的保密。•缺点:查找文件时要逐层搜索,影响速度。•4、文件目录检索“按名存取”文件就是系统根据用户提供的文件路径名来搜索各级目录,最后找到该文件的目录项,从而确定文件在文件存储器中的位置。单级目录结构的文件系统,只要以文件名为关键字顺序查找,依次和目录表中的目录项的名字字段相比较,找出符合的目录项即可。二级目录结构的文件系统,按用户提供的用户名/文件名,依顺序查找,先在主目录中找到该用户名的此目录表位置,再在此目录表查找相符的文件,即要进行两次搜索。树状结构的文件系统,顺序查找的依据是用户提供的文件路径名,从根目录开始,依次以路径名中提供的各目录名,逐层搜索各目录表,最后找到相符文件名的目录项。•5、文件目录的管理•系统中文件目录也很庞大,不必全部存放到主存中,可以只把当前正在使用的文件目录存放到主存中。•通常把文件目录也作为文件保存在存储介质上,由文件目录组成的文件称为目录文件。•第五节文件的组