计算机操作系统第6章文件管理南京工业大学信息学院计算机系信息学院计算机系2005年9月计算机操作系统第6章文件管理6.1文件和文件系统6.2文件的逻辑结构6.3外存分配方式6.4目录管理6.5文件存储空间的管理6.6文件共享与文件保护信息学院计算机系2005年9月计算机操作系统36.1文件和文件系统文件:具有名字(文件名)的若干相关元素的集合。元素通常是记录记录又是一组有意义的数据项的集合。数据分成数据项、记录、文件三级。6.1.1文件、记录和数据项记录:一组相关数据项的集合,用于描述一个对象在某方面的属性。有结构文件:由若干相关记录组成。记录式文件无结构文件:被看成字符流。流式文件信息学院计算机系2005年9月计算机操作系统6.1.2文件类型和文件系统模型1.文件类型1)按用途分类系统文件用户文件库文件2)按文件中数据的形式分类源文件目标文件可执行文件3)按存取控制属性分类执行文件读文件写文件信息学院计算机系2005年9月计算机操作系统6.1.2文件类型和文件系统模型2.文件系统模型该模型分为三个层次:底层是对象及其属性——文件、目录、磁盘存储空间中间层是对对象进行操纵和管理的软件集合:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读、写的管理、对文件的共享和保护等功能——文件系统的核心部分高层是文件系统提供给用户的接口——命令接口、程序接口信息学院计算机系2005年9月计算机操作系统6.1.3文件操作最基本的文件操作有:创建、删除、读、写文件等。还有:打开文件、关闭文件、文件更名。1.最基本的文件操作1)创建文件统为新文件分配必要的外存空间;文件目录中为其建立目录项。目录项中应包含文件名及其在外存的地址等属性。2)删除文件到要删除文件的目录项,使之成为空项;收文件所占的存储空间。信息学院计算机系2005年9月计算机操作系统6.1.3文件操作1.最基本的文件操作3)读文件在相应的系统调用中给出文件名和应读入的内存目标地址。为此,须先查找目录,找到指定的目录项,从中得到被读文件的外存地址和文件读指针4)写文件在相应的系统调用中给出文件名和该文件在内存的(源)地址。找目录,找到指定的目录项,再利用目录中的写指针进行写操作。信息学院计算机系2005年9月计算机操作系统6.1.3文件操作2.文件的“打开”和“关闭”操作当前OS所提供的大多数文件操作,其过程大致都是这样两步:过检索文件目录来找到指定文件的属性及其在外存上的位置;文件实施相应的操作,如读文件或写文件等。打开文件——是指系统将指明文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称索引号)返回给用户。作用:以后,当用户再要求对该文件进行相应操作时,便可利用该索引号向系统提出操作请求。这时系统便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索时间,也显著提高了对文件的操作速度。关闭文件——如果用户已不再需要对该文件操作时,可利用“关闭”(Close)系统调用来关闭此文件,OS将会从打开文件表中把该文件对应的表目删除。信息学院计算机系2005年9月计算机操作系统6.2文件的逻辑结构通常,文件是由一系列的记录组成的。文件系统设计的关键要素是:这些记录构成一个文件的方法——逻辑结构将一个文件存储到外存上的方法——存储结构文件的逻辑结构——这是从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织。文件的物理结构——又称文件的存储结构,是指文件在外存上的存储组织形式。它不仅与存储介质的存储性能有关,而且与所采用的外存分配方式有关。对文件逻辑结构所提出的基本要求:提高检索速度便于修改降低文件的存储费用信息学院计算机系2005年9月计算机操作系统6.2.1文件逻辑结构的类型1.有结构文件又称记录式文件。数据库常采用有结构文件。每个记录都是描述实体集中的一个实体,各记录着相同或不同数目的数据项。1)定长记录文件长度使用记录数目表示。记录的处理方便、开销小。是目前较常用的一种记录格式,被广泛用于数据处理中。信息学院计算机系2005年9月计算机操作系统6.2.1文件逻辑结构的类型1.有结构文件2)变长记录变长的原因:可能是记录中包含的数据项数目不相同;也可能是数据项长度不相同。根据用户和系统管理上的需要,可采用多种方式来组织这些记录,形成下述几种文件:顺序文件——这是有一系列记录按某种顺序排列所形成的文件。通常是定长记录组成,也可以是变长记录的。索引文件——当记录可变长时,通常为之建立一张索引表,并为每个记录设置一个表项,以加快对记录的检索速度。——定长记录也可用。索引顺序文件——为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。——至少每组内是定长记录。信息学院计算机系2005年9月计算机操作系统6.2.1文件逻辑结构的类型2.无结构文件源程序、可执行文件、库函数等,采用的是无结构文件形式,即流式文件。其长度以字节为单位。采用读写指针来指出下一个要访问的字符。可以把流式文件看作是记录式文件的一个特例。UNIX系统中,所有文件都被看作是流式文件;即使是有结构文件,也被看作流式文件;系统不对文件进行格式处理。在一个系统中,可能采用多种逻辑结构的文件。信息学院计算机系2005年9月计算机操作系统6.3外存分配方式物理结构直接与外存分配方式有关。目前常用的外存分配方式有:连续分配、链接分配、索引分配。在一个系统中,仅采用其中的一种外存分配方式。6.3.1连续分配(顺序文件)1.连续分配方式要求为每一个文件分配一组相邻的盘块。把逻辑文件中的记录顺序地存储到相邻的物理盘块中。成为顺序文件结构,又称顺序文件。文件目录项:文件名、第一个盘块号、文件长度(以盘块数进行计量),如图6.1所示。会形成磁盘碎片(外部碎片),可以用紧凑方法消除碎片,但将花费比内存紧凑多得多的时间。信息学院计算机系2005年9月计算机操作系统146.3.1连续分配连续分配的目录结构filenamestartlengthcount02tr143mail196list284f622.连续分配的主要优缺点优点:顺序访问容易——从第一个盘块开始,顺序地、逐个地往下读/写。也支持直接存取。顺序访问速度快——磁头移动得距离最少。缺点:要求有连续的存储空间必须事先知道文件的大小。文件大小不宜动态变化。信息学院计算机系2005年9月计算机操作系统6.3.2链接分配(链接文件)在采用链接分配时,可通过在每个盘块上的链接指针,将同属于一个文件的多个离散的盘块链接成一个链表,把这样形成的文件称为链接文件。优点:消除了外部碎片,提高了外存利用率便于文件动态增长,文件的增、删、改也十分方便。链接方式又可以分为隐式链接和显式链接两种。1.隐式链接每个文件的目录项中,包含第一个盘块和最后一个盘块号(指针),而在每个盘块中,都有一个指向下一个盘块的指针。如果盘块大小为512字节,指针占4个字节,则每个盘块中只有508个字节可供用户使用。Filestartendjeep925目录结构信息学院计算机系2005年9月计算机操作系统1.隐式链接隐式链接缺点:只适合顺序访问,对随机访问极其低效。可靠性差——任何一个指针出现问题,都将导致整个链的断开。为了提高检索速度和减少指针所占用的存储空间,可以将几个盘块组成一个簇(cluster)。但增大了内部碎片。信息学院计算机系2005年9月计算机操作系统2显式链接用于链接文件物理块的指针(块号),显式地存放在外存的一张链接表中,整个磁盘仅一张表,如图6-1所示。表中的序号是物理块号,从0开始,直至N-1;N为磁盘总块数。每个表项中存放链接指针,即下一个盘块号。文件的第一个块号,存放在文件目录项(FCB)中。系统启动时,该表调入内存——提高检索速度该表称为文件分配表FAT(FileAllocationTable)MS-DOS、Windows、OS/2等操作系统都采用FAT。见图6-2。信息学院计算机系2005年9月计算机操作系统信息学院计算机系2005年9月计算机操作系统6.3.3索引分配(索引文件)1.单级索引链接分配解决了连续分配存在的问题,但又出现了另外两个问题:不能支持高效的直接存取。FAT需要占用较大的内存空间——由于一个文件所占用的盘块号是随机地分布在FAT中的,因而只有将整个FAT调入内存,才能保证在FAT中找到一个文件的盘块号。当磁盘容量很大时,FAT可能要占用数MB以上的内存空间,这是令人难以接受的。事实上,在打开文件时,只需要把该文件的盘块号调入内存即可,完全没有必要将整个FAT调入内存。为此,应将每个文件的盘块号集中放在一起。索引分配方法就是基于这种思想所形成的一种分配方法。它为每个文件分配一个索引块(表),把分配给该文件的盘块号都记录在索引块中。在建立文件时,其目录项中包含指向索引块的指针。优点:索引分配支持直接访问。索引分配不会产生外部碎片。文件较大时,优于链接分配。缺点:可能要花费较多的外存空间。——每个文件都要一个索引表,小文件仍需分配一个盘块。信息学院计算机系2005年9月计算机操作系统单级索引的目录结构文件名块号jeep1991611025-1-1目录索引表信息学院计算机系2005年9月计算机操作系统2.多级索引分配当OS为一个大文件分配磁盘空间时,若盘块号装满一个索引块时,OS便为该文件分配另一个盘块,依次类推,再通过链指针将各索引块链接起来。这种方法是低效的。解决的办法是采用多级索引。图6-3是两级索引。信息学院计算机系2005年9月计算机操作系统信息学院计算机系2005年9月计算机操作系统索引文件的大小——例子【例】如果盘块大小为1KB,每个盘块号占4个字节,则一个索引块可存放256个盘块号。这样在两级索引时,文件的最大盘块数为N=256×256=64K个盘块号。即允许的文件最大长度为64MB。若采用一级索引,允许的最大文件长度为1KB×256=256KB。学生考虑(计算)盘块大小为4KB的情况。信息学院计算机系2005年9月计算机操作系统3.混合索引分配方式将多种索引方式相结合而形成的一种索引方式。有直接索引、一级索引、二级索引,甚至三级索引。UNIX系统采用混合索引方式。如图6-4所示。直接索引UNIXSystemV的索引结点中,共设13个地址项:i.addr(0)~i.addr(12)信息学院计算机系2005年9月计算机操作系统UNIX系统采用混合索引方式1)直接地址。为了提高对文件的检索速度,设置了10个直接地址项,i.addr(0)~i.addr(9)。设盘块大小为4KB,当文件大小不超过40KB时,可直接索引得到。2)一次间接地址。i.addr(10)。文件大小不超过4MB+40KB。(假设盘块号4字节)3)二次间接地址。i.addr(11)。文件大小不超过4GB+4MB+40KB。4)三次间接地址。i.addr(12)。文件大小不超过4TB+4GB+4MB+40KB。信息学院计算机系2005年9月计算机操作系统6.4目录管理对目录管理的要求:实现“按名存取”提高对目录的检索速度文件共享允许文件重名信息学院计算机系2005年9月计算机操作系统6.4.1文件控制块和索引结点为了能对文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称为“文件控制块(FCB)”。一个文件对应一个FCB(目录项)。若干目录项组成一个目录文件。1.文件控制块通常包含三类信息:基本信息类①文件名;②文件物理位置;③文件逻辑结构;④文件物理结构存取控制信息类①文件主的存取控制权限;②核准用户的存取控制权限;③一般用户的存取控制权限使用信息类①文件建立的日期、时间;②文件上一次修改的日期、时间;③当