操作系统,原理,徐宗元OS-第五章课件_第1页
操作系统,原理,徐宗元OS-第五章课件_第2页
操作系统,原理,徐宗元OS-第五章课件_第3页
操作系统,原理,徐宗元OS-第五章课件_第4页
操作系统,原理,徐宗元OS-第五章课件_第5页
已阅读5页,还剩203页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第五章()文件系统引言操作系统对系统的软件资源(不论是应用软件和系统软件)的管理都以文件方式进行,承担这部分功能的操作系统称为文件系统。本章介绍文件的逻辑组织和在文件存储器上的物理组织;实现“按名存取”和文件共享、保护的文件系统目录的结构和管理;文件存储空间分配和回收算法和文件系统的磁盘格式;文件系统的安全性。教学要求掌握文件和文件系统的定义,了解文件系统的类型、文件系统模型。掌握文件的逻辑结构,熟悉五种记录文件。掌握文件的物理结构及连续分配、链接分配、索引分配和UNIX直接间接混合寻址方式等外存分配方法。掌握文件控制块和多级目录结构,掌握UNIX树型带勾连的目录结构和可装卸文件系统,熟悉现代操作系统对多种文件系统的支持,了解FAT、VFAT目录结构。掌握基于索引节点的共享方式和利用符号连接的文件共享。熟悉目录查询技术,掌握内存的目录管理表,掌握文件操作与目录管理关系。文件系统目录5.1概述5.1.1文件5.1.2文件系统5.2文件的组织5.2.1文件的逻辑结构和存取方法5.2.2文件的物理结构5.2.3UNIX/Linux直接间接混合寻址方式5.2.4VFAT表结构5.2.5范例文件系统目录-15.3文件的目录和管理5.3.1文件控制块FCB5.3.2目录结构--多级目录5.3.3UNIX/Linux树型目录结构5.3.4文件别名(文件共享)---树型带勾连的目录结构5.3.5子文件系统连结––UNIX/Linux可装卸子文件系统5.3.6虚拟文件系统VFS――Linux操作系统对多种文件系统的支持5.3.7内存目录管理5.3.8win32文件和目录操作的API函数5.3.9FAT、VFAT文件系统目录结构文件系统目录-25.4文件存储空间的管理5.4.1磁盘组织5.4.2磁盘空闲块管理和磁盘碎片整理5.4.3Linuxext2文件系统磁盘的结构5.4.4FAT文件系统磁盘的结构[14]5.5NTFS文件系统5.5.1NTFS的卷、蔟和卷布局5.5.2NTFS的引导扇区5.5.3NTFS系统文件和主文件表5.5.4NTFS文件属性5.5.5NTFS文件名5.5.6索引5.1文件系统概述5.1.1文件1.文件的定义和命名

计算机系统对系统中软件资源:无论是程序或数据、系统软件或应用软件都以文件方式来管理。文件是存贮在某种介质上的(如磁盘、磁带等)并具有文件名的一组有序信息的集合。

文件的定义和命名-1

文件名是由字符和数字组成的,例如MS-DOS中文件名由三部分组成,格式如下:[<盘符>]<文件名>[.扩展名]。格式[]中是可以省略,盘符为存放文件的磁盘驱动器号,如用A:和C:分别表示软盘和硬盘驱动器;文件名由1∽8个字符组成。扩展名为由“.”开始的1-3个字符组成,如.EXE表示可执行的浮动代码文件,.TXT表示ASCⅡ码文本文件,.LIB表示库文件,.BAT表示批处理文件等。2.文件类型

UNIX文件系统将文件分成普通文件、目录文件、设备文件(特殊文件)和符号连接文件(Symboliclink)等几类,UNIX把所有I/O设备作为特殊文件,对I/O设备操作模仿为对普通文件的存取,这样将文件与设备的I/O尽可能统一起来。目录文件在5.3.3介绍,符号连接文件在5.3.4介绍。

UNIX用$ls–l长列表显示时第一个字符表示文件类型:“-”表示普通文件,“d”表示目录文件,“l”表示符号连接文件,c、b、p分别表示字符设备、块设备和FIFO管道的特殊文件。

5.1.2文件系统1.

文件系统定义和命名

文件系统是操作系统中以文件方式管理计算机软件资源的软件和被管理的文件和数据结构(如目录和索引表等)的集合。

从系统角度来看,文件系统是对文件存储器的存储空间进行组织、分配和回收,负责文件的存储、检索、共享和保护。从用户角度来看,文件系统主要是实现“按名存取”,文件系统的用户只要知道所需文件的文件名,就可存取文件中的信息,而无需知道这些文件究竟存放在什么地方。

2。文件系统的类型(1)FAT文件系统(MS-DOS文件系统、msdos)它是MS-DOS操作系统使用的文件系统,它也能由Windows98/NT、linux、SCOUNIX等操作系统访问。文件地址以FAT表结构存放,文件目录32B,文件名为8个基本名加上一个“.”和3个字符扩展名。(2)扩展文件表系统(vfat)它是Windows98使用的扩展的DOS文件系统,它在MS-DOS文件系统基础上增加了对长文件名(最多到256B)支持。文件系统的类型-1(3)NTFS(NT文件系统)它是WindowsNT操作系统使用的文件系统,它具有很强的安全特性和文件系统恢复功能,可以处理巨大的存储媒体,支持多种文件系统。(4)ext2(二级扩展文件系统)它是Linux操作系统使用的高性能磁盘文件系统,它是对Minux操作系统中使用的文件系统扩展(ext)的扩展。它支持256字符的文件名,最大可支持到4TB的文件系统大小。文件系统的类型-3(8)UDF通用磁盘格式文件系统UDF(UniversalDiskFormat)文件系统是依据光学储存技术协会(OpticalStorageTechnologyAssociation,OSTA)的通用磁盘格式文件系统规格1.02版所制定的。它提供了对UDF格式媒体的只读访问(例如DVD光盘)。Windows98提供对UDF文件系统支持。3.现代操作系统支持多种文件系统

现代操作系统(如Windows2000/XP、Linux、UNIX等)提供了对多种文件系统的支持。(1)Windows2000/XPWindows2000/XP支持FAT文件系统、NTFS、HPFS、CD-ROM文件系统等多种文件系统。Windows2000执行体内I/O系统分成I/O管理程序、文件系统驱动程序和盘驱动程序三层,不同的文件系统采用不同的文件系统驱动程序,系统用动态连接库对这些文件系统进行装入和卸出并适宜于将来的扩展。现代操作系统支持多种文件系统-1(2)LinuxLinux支持ext、ext2、msdos、vfat、iso9660、hpfs等多种文件系统。Linux采用虚拟文件系统VFS支持许多不同类型的文件系统,VFS是物理系统与服务之间的一个接口层,它屏蔽各类文件系统的差异,给用户和程序提供一个统一的接口。使用命令mkfs创建各类文件系统。5.文件管理的目的方便的文件访问和控制:以符号名称作为文件标识,便于用户使用;并发文件访问和控制:在多道程系统中支持对文件的并发访问和控制;统一的用户接口:在不同设备上提供同样的接口,方便用户操作和编程;多种文件访问权限:在多用户系统中的不同用户对同一文件会有不同的访问权限;优化性能:存储效率、检索性能、读写性能;差错恢复:能够验证文件的正确性,并具有一定的差错恢复能力;5.2文件的组织

文件的组织是指文件的构造方式从用户观点出发观察到的文件组织结构称为文件的逻辑结构而文件在外存上的存储组织形式称为文件的物理结构,又称文件的存储结构。

5.2.1文件的逻辑结构和存取方法1.文件的逻辑结构

从用户观点出发观察到的文件组织结构---文件的逻辑结构逻辑结构的文件称逻辑文件逻辑文件---无结构的流式文件---有结构的记录式文件

文件的逻辑结构和存取方法-1

记录文件有顺序、索引、索引顺序、直接、分区和堆文件几种。(1)堆(ThePile)文件(累积文件)堆文件是最简单的记录文件,它是串结构的顺序文件。数据按先来后到的次序组织,每个记录所包含的数据项是自我标识的,数据项的长度可以明确指定或使用界定符区分。在堆文件中访问所需要的记录需穷尽搜索,这种文件组织不适合大多数应用。(4)索引顺序文件

(IndexedSequentialFile)

索引顺序文件是基于键的约定次序组织的,为之建立一张索引表,为每个不同键值的记录组的第一个记录设置一个表项,为该组的其它记录设置了溢出区域,在溢出区域内记录按顺序文件方式组织。它是顺序文件和索引文件的结合。索引顺序文件既适用于交互方式应用,也适用于批处理方式应用。索引顺序文件图示(5)直接文件/哈希文件

(TheDirect/HashedFile)检索时给出记录编号,通过哈希函数计算出该记录在文件中的相对位置。它可以对记录在直接访问存储设备上的物理地址直接(随机)访问。直接文件常用于需要高速访问文件而且每次访问一条记录的应用中。2.存取方法

用户通过对文件的存取来完成对文件的修改、追加和搜索等操作。常用的存取方法有顺序存取法、随机存取法(直接存取法)和按键存取法三种。

顺序存取法是按照文件的逻辑地址顺序存取,在记录式文件中,这反映为按记录的排列顺序来存取,在无结构的字符流文件中,顺序存取反映当前读写指针的变化。存取方法-1

随机存取法允许用户根据记录的编号来存取文件的任一记录,或者是根据存取命令把读写指针移到欲读写处来读写。

按键存取法是一种用在复杂文件系统,特别是数据库管理系统中的存取方法,文件的存取是根据给定的键或记录名进行的。

UNIX、Linux和Windows等操作系统都采用顺序存取和随机存取两种方法。

5.2.2文件的物理结构

文件在存储介质上的组织方式称为文件的存储结构或称文件的物理结构、物理文件。

外存分配方法有连续分配、链接分配、索引分配,相应物理文件有:顺序文件、链接文件、索引文件。1。连续分配—顺序文件

把逻辑文件中连续的信息存储到磁盘连续的物理盘块中所形成的文件称为顺序文件。这种文件保证了逻辑文件中逻辑记录(流式文件为逻辑块、页)顺序和存储器中文件占用盘块顺序的一致性。为使系统能查找文件中任一记录,在文件控制块FCB(或在目录)中存放文件第一个记录所存放的盘块号ADRR和文件总的盘块数N,如下图所示。连续分配—顺序文件-1如假设逻辑块和盘块大小相等,则要读取文件第Ⅰ页(页从0开始计数)所在盘区块号J可通过下式计算得到:J=ADRR+I。逻辑地址LA对应逻辑块号为I=LA/块大小块内位移为d=LAmod块大小优点是管理简单,顺序存取速度快。缺点是增删记录相当困难,磁盘存储空间的利用率不高,有外零头。所以顺序文件只适用于长度不变的只读文件。

P203图5-1顺序文件结构ContiguousAllocationofDiskSpace2。链接分配—链接文件在将逻辑文件存储到外存上时,不要求为整个文件分配连续的空间,而是可以装入到离散的多个盘块中,只在每个盘块最后一个单元设置链接指针(这称为隐式链接),然后用链接指针将这些离散的盘块链接成一个队列,这样形成的物理文件称为链接文件。管理链接文件只需在文件控制块FCB中设二项,一是存储文件头块信息的盘块号,另一是存储文件尾块信息的盘块号。链接文件结构如下图所示。

P203图5-2链接文件结构LinkedAllocationofdiskspace链接分配—链接文件-1链接文件的优点是盘存储空间利用率高,文件增删改记录方便,缺点是在随机存取某一个记录前需要化多次盘I/O操作读该记录前的文件信息以取得该记录的盘块号,才能存取该记录。如要读取逻辑块号第3块的信息,就要先进行3次盘I/O操作以读取存放第3块逻辑块信息的盘块号,所以链接文件只适用于顺序存取文件。

3。索引分配—索引文件

索引文件是实现非连续存储的另一种方法,系统为加快记录的检索过程,为每个文件建立了一张索引表,每个逻辑块在索引表中占有一个表项,登记存放该逻辑块的盘块号。在FCB中放置了索引表指针,它指向索引表始址,索引表存放在盘块中。

ExampleofIndexedAllocation索引分配—索引文件-1

当索引表很大时,需要用多个盘块。管理有多个盘块的索引表有二种方法:一种方法是将存放索引表的盘块用链接指针链接起来称为链接索引。链接索引可以顺序地读取索引表各索引表项,但读取后面的索引表项类同链接文件需要化费多次盘I/O操作。另一种方法是采用多级索引,即为索引表本身建立索引表,从而形成了两级索引,如所形成的两级索引表还不能存放在一个盘块中,则需要为二级索引表建索引表,而形成三级索引。下图所示为两级索引。

链接索引分配图示80501012::2580#010#112::#102225120::176.::

:#1023120::

::索引表块号50总的盘块数NFCBP204图5-3二级索引文件结构

012物理块号8

101120索引表块号10820

...........

逻辑块号0逻辑块号1第二级索引

主索引表物理块号101文件控制表FCB物理块号120物理块号20物理块号10索引分配文件系统管理的最大的文件系统采用多级索引的级别由系统管理的最大文件所决定。如果每个盘块的大小为4KB,每个盘块号大小占4B一个盘块可以管理的最大盘块数(它有索引表项数)n=盘块的大小/盘块号大小=4KB/4B=1K个。一级索引可以管理的最大文件=盘块的大小×一级索引可以管理的最大盘块数=盘块的大小×n=4KB×1K=4MB,

二级索引可以管理的最大文件=盘块的大小×二级索引可以管理的最大盘块数=盘块的大小×(n×n)=4KB×(1K×1K)=4GB,三级索引可以管理的最大文件=盘块的大小×三级索引可以管理的最大盘块数=盘块的大小×(n×n×n)=4KB×1K×1K×1K=4TB。索引分配—索引文件-2

采用链接索引读取大文件的最前和最后索引表项时需要盘I/O操作次数相差很大,如文件大小为450MB,则索引表需要113块盘块存放,读取第一逻辑块只需一次盘I/O操作即取得所在盘块号,而读取最后逻辑块需要113次才能取得所在盘块号。而对于多级索引,不论对大文件还是小文件,不论是大文件开始或结尾处,读取文件某个逻辑块的盘I/O操作次数是固定的,例如对二级索引要读取文件第8500号逻辑块信息,必须根据逻辑块号分别进行三次盘I/O操作,第一次先读取主索引表第8项索引表项(8500/1000=8取整)取得二级索引表项所在盘块号。第二次读二级索引的盘块,读得第8500号逻辑块所在盘块号,第三次才能进行存取第8500号逻辑块。索引分配——索引文件-2

索引文件由于它既适合顺序存取记录又适合按任意次序随意存取记录,也便于增删文件的记录,所以索引结构文件应用范围较广。索引文件的缺点是当文件很大时索引表很庞大,占用了许多盘空间,而在文件很小时,多级索引级别又不变,带来索引块的另头和存取速度减慢。

5.2.3UNIX/Linux直接间接混合寻址方式

由于80%以上文件是小文件,为了解决能高速存取小文件和管理大文件的矛盾,UNIX将直接寻址、一级索引、二级索引和三级索引结合起来,形成了混合寻址方式,如下图所示。在UNIXSV的索引结点中设有13个地址项di_addr[13](Linux的ext2设有15个地址项)它们把所存的地址项分成两类,其中最后三个地址项分别是一级索引、二级索引和三级索引的指针,而前面10个(ext2为12个)为直接寻址的地址项.假如每个盘块大小为4KB,每个地址用4B表示,一个盘块可存n=4KB/4B=1K个索引表目。UNIX/Linux直接间接混合寻址方式-1前面10个地址项存放文件逻辑块号第0-9块号的盘块号。如文件大于4KB*10=40KB时,系统增加一级索引,文件逻辑块号第10-1033块号的盘块号存放在一级索引块中。如文件大于4KB*(10+1K),系统再逐步增加二级索引和三级索引,这样最大管理的文件为40KB+4MB+4GB+4TB,达到管理大文件的目标。当文件不大于40KB时,便可直接从索引结点的di_addr[0]--di_addr[9]中读出该文件全部盘块号,这样读小文件时速度快;由于它采用直接寻址,也不需专用物理块来用作索引块,节省了用作管理的空间。P205图5-4UNIX/Linux直接间接混合寻址方式

二次间接块一次间接块

三次间接块....。。

..

..

....di_addr[0]

di_addr[1]

di_addr[2]

...

di_addr[9]

di_addr[10]一次间接di_addr[11]二次间接di_addr[12]三次间接1034#数据块0#1#2#9#10#5.2.4VFAT表结构

MS-DOS文件系统的文件物理结构采用FAT表结构。该结构为了克服链接文件随机读取任一逻辑块需要化费多次盘I/O操作的不足,将各盘块中的链接指针集中存放在盘的开始部分,构成一张表,称为FAT表。(这称为显式链接)FAT表每一项存放链接指针(下一个簇号),每个FAT表项占12位或16位,称为FAT12或FAT16。对于软盘因为容量小,簇数也少,采用12位FAT表,对于硬盘则采用16位FAT表。VFAT表结构-1

FAT表文件系统原为小硬盘的目录结构而设计,由于簇的数目最多只能用16位表示,即最多只能有64K个簇,要用FAT表管理大的磁盘分区,只能采取增大每簇所包含的扇区数,一般根据磁盘的类型和容量大小来决定簇的大小,如表5-1左边所示。当然每簇包含扇区数增加,带来内另头的浪费,这对小文件特别严重。Windows98为了减少内另头的浪费,可采取每簇的数目用32位表示,减少每簇包含扇区数,这称为FAT32。FAT16、FAT32文件系统簇和扇区关系见表5-1右边所示。FAT文件系统卷结构图示返回表5-1FAT文件系统簇和扇区关系

VFAT表结构-1VFAT表结构图示VFAT表结构-2对于16位FAT表,每个表项占据2字节,前一字节作为低2位,后一个字节作为高2位,即得到表项内容。FAT32第一行前8个字符为F8FFFFOFFFFFFFOF。其中第8个字符默认为OFh。虚拟文件分配表(VFAT)和Windows98关闭处理把这个字节的第4位变成1或0。其中0-VFAF已经写到磁盘;1-Windows已经正确地关闭。当把一个文件写到磁盘上时,VFAT处理这个写操作。在写操作期间,VFAT把第4位清为0(即把OFh改为07h)。当Windows98正常退出时,这个位重新设置为1。在重新引导时,W读这个数据位。如果它被设置为0,磁盘扫描工具将检查驱动器错误。W就是这样确定不正确关机。FAT文件系统浏览见实验5.7.2。

5.2.5范例

一个文件系统中有一个20MB大文件和一个20KB小文件,当分别采用连续、链接、二级索引和UNIXSV分配方案时(每块大小为4096B,每块地址用4B表示),问:1.各文件系统管理的最大的文件是多少?2.每种方案对大、小二文件各需要多少专用块来记录文件的物理地址(说明各块的用途)?范例-13.如需要读大文件前面第5.5KB和后面(16M+5.5KB)信息,则每个方案各需要多少次盘I/O操作?这个范例是帮助读者深入比较文件物理组织的各种方案:顺序文件的连续分配、链接文件的链接分配、二级索引分配、链接索引分配和UNIX的直接间接混合分配,明确各种分配方案的优缺点和UNIX分配方案的设计特点。范例-21。各种分配方案的文件系统可管理的最大文件连续分配:不受限制,可大到整个磁盘文件区。链接分配:同上。链接索引:同上。二级索引:由于盘块大小为4KB,每个地址用4B表示,一个盘块可存1K个索引表目,二级索引可管理的最大文件容量为4KB×1K×1K=4GB,如要管理更大的文件需采用三索引,它可管理4TB大小文件。UNIX混合分配:可管理的最大文件为40KB+4MB+4GB+4TB。范例-32。每种分配方案对20MB大文件和20KB小文件各需要多少专用块来记录文件的物理地址?连续分配:对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数,不需专用块来记录文件的物理地址。链接分配:对大小二个文件都只需在文件控制块FCB中设二项,一是首块物理块块号,另一是文件总块数;同时在每块存文件的物理块中设置存贮下一块块号的指针。范例-4

二级索引:对大小文件都固定要用二级索引,对20KB小文件,用一块作第一级索引,用另一块作二级索引,共用二块专用物理块作索引块,对于20MB大文件,用一块作第一级索引,用5块作第二级索引,共用六块专用物理块作索引块。UNIX的混合分配:对20KB小文件只需在文件控制块FCB的i_addr[13]中使用前5个表目存放文件的物理块号,不需专用物理块。对20MB大文件,FCB的i_addr[13]中使用前10个表目存放大文件前10块物理块块号,用一级索引块一块保存大文件接着的1K块块号,还要用二级索引存大文件以后的块号,二级索引使用第一级索引1块,第二级索引4块。总共也需要6块专用物理块来存放文件物理地址。范例-53.为读大文件前面第5.5KB和后面(16M+5.5KB)信息需要多少次盘I/O操作?连续分配:为读大文件前面和后面信息都需先计算信息在文件中相对块数,前面信息相对逻辑块号为5.5K/4K=1,后面信息相对逻辑块号为(16M+5.5K)/4K=4097。再计算物理块号=文件首块号+相对逻辑块号,最后化一次盘I/O操作读出该块信息。范例-6链接分配:为读大文件前面5.5.KB的信息,只需先读一次文件头块得到信息所在块的块号,再读一次第1号逻辑块得到所需信息。而读大文件后面16MB+5.5KB的信息,要先把该信息所在块前面块顺序读出,共化费4097次盘I/O操作,才能得到信息所在块的块号,最后化一次I/O操作读出该块信息。所以总共需要4098次盘I/O才能读取(16MB+5.5KB)字节信息。范例-7二级索引:为读大文件前面和后面信息的操作相同,首先进行一次盘I/O读第一级索引块,然后根据它的相对逻辑块号计算应该读第二级索引的那块,第一级索引块表目号=相对逻辑块号/1K,对文件前面信息1/1K=0,对文件后面信息4097/1K=4,第二次根据第一级索引块的相应表目内容又化一次盘I/O读第二级索引块,得到信息所在块块号,再化一次盘I/O读出信息所在盘块,这样读取大文件前面或后面信息都只需要3次盘I/O操作。范例-8UNIX混合分配:为读大文件前面5.5KB信息,先根据它的相对逻辑块号,在内存文件控制块FCB的i_addr[13]第二个表目中读取信息所在块块号,而只化费一次盘I/O操作即可读出该块信息。为读大文件后在(16MB+5。5KB)信息,先根据它的相对逻辑块号判断它是在UNIX二级索引管理范围,先根据i_addr[11]内容化一次盘I/O操作读出第一级索引块,再计算信息所在块的索引块号在第一级索引块的表目号为(4097-9-1024)/1024=3,根据第一级索引块第3个表目内容再化费一次盘I/O操作,读出第二级索引块,就可以得到信息所在块块号,最后化一次盘I/O读出信息所在盘块,这样总共需要3次盘I/O操作才能读出文件后面的信息。

范例-95.3文件的目录和管理

5.3.1文件控制块FCB

为了实现“按名存取”,系统必须为每个文件设置用于描述和控制文件的数据结构,它至少要包括文件名和存放文件的盘物理地址,这个数据结构称为文件控制块FCB,文件控制块的有序集合称为文件目录,即一个文件控制块FCB就是一个文件目录项。文件控制块FCB中包含的信息有以下三类:文件控制块FCB-11。基本信息类文件名:标识一个文件的符号名,在每个系统中文件必须具有唯一的名字。.文件的物理地址:这由于文件的物理结构不同而不同。对于连续文件就是文件的起始块号和文件总块数;对于MS-DOS是文件的起始簇号和文件总字节数;对于UNIXSV是文件所在设备的设备号、13个地址项、文件长度和文件块数等。2.存取控制信息类文件的存取权限,象UNIX用户分成文件主、同组用户和一般用户三类,这三类用户的读写执行(RWX)的权限。文件控制块FCB-23.使用信息类文件建立日期、最后一次修改日期、最后一次访问的日期;当前使用的信息:打开文件的进程数,在文件上的等待队列等。文件控制块的信息因OS而不同,SCOUNIX文件系统ls文件长列表显示$ls–l的FCB信息如下:-r-xr-xr-t1binbin43296May131997/opt/K/SCO/Unix/5.0.4Eb/bin/ls显示的各项信息为文件类型和存取权限、连接数、文件主、组名、文件长度、最后一次修改日期、文件名。5.3.2目录结构--多级目录

目录结构的组织关系到文件系统的存取速度,关系到文件共享性和安全性,因此组织好文件的目录是设计文件系统的重要环节。1。单级目录结构最简单的目录结构是在整个文件系统中只建立一张目录表,每个文件占一个表目,这称为单级目录。单级目录结构简单,能实现目录管理的基本功能--按名存取,但存在查找速度慢,不允许重名和不便于实现文件共享等缺点,因此它只适用于单用户环境。目录结构--多级目录-12。多级目录结构为了解决以上问题,在多道程序设计系统中常采用多级目录结构,MS-DOS和UNIX等操作系统都采用多级目录结构。这种目录结构象一棵倒置的有根树,该树根向下,每一个节点是一个目录,最末一个结点是文件,下图为UNIX树形多级目录结构。在多级目录中要访问一个文件时,必须指出文件所在的路径名,路径名从根目录开始到该文件的通路上所有各级目录名拼起来得到,各目录名之间与文件名之间可用分隔符隔开。在MS-DOS中分隔符为“\”,在UNIX中分隔符为“/”。例如下图中访问命令文件man的路径名为/usr/lib/man,这也称为文件全名。Tree-StructuredDirectoriesP209图5-5UNIX树形目录结构binusrmntetctmpdevbootunixlswhohdlmountTmp00ltty0lspoolincludesysbinlibdchioconfdir.hlibio.hTab.cmana.out.h目录结构--多级目录-2重名问题:在多级目录中存取一个文件需要用文件全名,这就允许用户在自己的目录中使用与其它用户文件相同的文件名,由于各用户使用不同的目录,虽二者使用了相同的文件名,但它们的文件全名仍不相同,这就解决了重名问题。采用多级目录结构也提高了检索目录的速度:如采用单级目录则查找一个文件最多需查遍系统所有文件名,平均也要查一半文件名。而多级目录查找一个文件最多只要查遍文件路径上各目录的子目录和文件,例如上图中要查找文件man,只要查遍root目录、usr目录和lib目录所在子目录和文件就可以。目录结构--多级目录-3相对路径:每访问一个文件都要使用从根目录开始搜索直到树叶的数据文件为止,包含各中间子目录的全路径名是相当麻烦的,同时由于一个进程运行时访问的文件大多局限在某个范围,基于这一点,可为每个用户(或每个进程)设置一个“当前目录”,又称“工作目录”。进程对各文件的访问都相对于“工作目录”而设置路径,这称为相对路径名。目录结构--多级目录-4相应地,从根目录开始的路径名称为绝对路径名(absolutepathname)。用相对路径可缩短搜索路径,提高搜索速度。例:文件mbox的绝对路径名为/usr/ast/mbox,如设置一个“当前目录”为/usr,则文件mbox的相对路径名为ast/mbox。

5.3.3UNIX/Linux树型目录结构

UNIX为了加快目录的寻找速度,UNIX将文件控制块FCB中文件名和文件说明分开。文件说明为索引节点,各文件索引节点集中存放在索引节点区,索引节点按索引节点号排序。而文件名与索引节点号构成目录项,UNIXSV操作系统的文件名14个字节,索引节点2个字节,共16个字节构成目录项。同一级目录项构成目录文件,在文件区存放。

UNIX/Linux树型目录结构-1

Linux目录文件中的目录项会变长,以保证系统支持文件名长度可变,最长达255个字符。目录项的前三项是定长的,包含以下信息:(1)索引节点号(4B);(2)目录项长度(2B);(3)文件名长度(2B)。目录项最后是文件名,目录项不能跨越二个块。UNIX树型的目录结构-1

每个文件有一个存放在磁盘索引节点区的索引节点,称为磁盘索引节点,它包括以下内容:(1)文件主标识符和同组用户标识符;(2)文件类型:是普通文件、目录文件、符号连接文件或特别文件(又分块设备文件或字符设备文件);(3)文件主,同组用户和其它人对文件存取权限(读R、写W、执行X);(4)文件的物理地址,用于5.2.4UNIX直接、间接混合寻址的13个地址项di_addr[13];(5)文件长度(字节数)di_size;(6)文件链接数di_nlink;(7)文件最近存取和修改时间等。UNIX采用文件名和文件说明分离的目录结构如下图所示:

UNIX磁盘文件卷结构图示P211图5-6UNIX树型带勾连的目录结构lsI=2bindevunixusrmntetctmpdey476987I=4I=6

ls10

dirdiskasterikjimbal101926305145

I=10I=26Booksmbox……9260…..I=60mbox5.3.4文件别名(文件共享)---树型带勾连的目录结构1.一般共享目录结构的缺点文件共享是指不同的用户使用不同的文件名来使用同一文件。在用一般共享目录结构时,一用户增加文件的内容,只改变自己的文件目录,其它用户不知改变。一般共享目录结构的缺点-12.基于索引节点(indexnode)的共享方式实现文件共享的一种有效方法是基本文件目录法。该方法把所有目录的内容分为文件名和文件说明两部分。一部分称为符号文件目录(SDF),它包含文件符号名和由系统赋予唯一的内部标识符ID组成。另一部分称为基本文件目录(BDF),它包含目录项中除文件符号名外的所有其它信息,并加上与符号目录相一致的内部标识符ID。标识符ID是各文件在基本文件目录中表目的排序号。UNIX/Linux采用了基本文件目录法目录结构。

基于索引节点的共享方式-1

采用文件名和文件说明分离的目录结构有利于实现文件共享,这里的文件共享是指不同的用户对同一文件可取不同的文件名,即给文件取别名。文件共享是通过在二个不同子目录下取了不同的文件名,但它们具有相同的索引节点号的方法来实现,UNIX/Linux这种目录结构称为树形带勾连的目录结构。

基于索引节点的共享方式-2

列出当前目录的子目录和文件命令ls是放在/bin子目录下,而/usr/bin子目录下可设置一个DOS兼容的命令dir,这增加的命令实为执行ls命令。为了共享文件,只是在二个不同子目录下取了不同的文件名ls和dir,但它们具有相同的索引节点。在文件的索引节点中有一个量di_nlink表示连接到该索引节点上的连接数;在用命令“ls-l”长列表显示时,文件的第2项数据项表示链接数。基于索引节点的共享方式-3

使用命令“ln”可给一已存在文件增加一个新文件名,即给文件取别名。

命令“$lnoldnew”执行后,文件的索引节点中链接数增加1。采用二个文件目录表目指向同一个索引节点的连接称为文件硬连接,此种链接不能跨越文件系统。用硬连接格式如下:$ln/opt/k/sco/unix/5.0.4Eb/bin/ls/usr/lx20/dir$ls

–ldir-r-xr-xr-t2binbin43296May131997dir3.利用符号连接(symboliclink,shortcut)文件硬连接不利于文件主删除它拥有的文件,因为文件主要删除它拥有的共享文件,必须首先删除(关闭)所有的硬连接,否则就会造成共享该文件的用户的目录表目指针悬空。为此又提出另一种连接方法--符号连接。系统为共享的用户创建一个link类型的新文件,将这新文件登录在该用户共享目录项中,这个link型文件包含连接文件的路径名。该类文件在用ls命令长列表显示时,文件类型为l。利用符号连接-1当用户要访问共享文件且正要读link型新文件时,操作系统根据link文件类型性质将文件读出的内容作为路径名去访问真正的共享文件。在UNIX中也是使用ln来建立符号连接的共享文件,这时命令为“$ln-soldnew”。如用符号连接格式如下:$ln-s/opt/k/sco/unix/5.0.4Eb/bin/ls/usr/lx20/dir$ls

–ldirlrwxrwxrwx1lx20group30Dec2713:34dir->/opt/K/SCO/Unix/5/0/4Eb/bin/ls利用符号连接-2采用符号连接可以跨越文件系统,甚至可以通过计算机网络连接到世界上任何地方的机器中的文件,此时只需提供该文件所在的地址,以及在该机器中的文件路径。符号连接的缺点:其它用户读取符号连接的共享文件比读取硬连接的共享文件需要增多读盘操作。因为其它用户去读符号连接的共享文件时,系统中根据给定的文件路径名,逐个分量地去查找目录,通过多次读盘操作才能找到该文件的索引节点,而用硬连接的共享文件的目录文件表目中已包括了共享文件的索引节点号。Windows2000的NTFS,支持文件别名的符号链接方式。

利用符号连接-3

SCOUNIX例:在SCOUNIX中ls文件实际存放的目录为/opt/k/sco/unix/5.0.4Eb/bin列表显示如下:$ls-l/opt/k/sco/unix/5.0.4Eb/bin/ls-r-xr-xr-t1binbin43296May131997/opt/K/SCO/Unix/5.0.4Eb/bin/ls在标准UNIX中ls命令在/bin子目录下,SCOUNIX采用符号连接在/bin子目录下建立ls文件,该ls是个link类型的文件,它不能用编辑文件显示,但用ls长列表显示时可看出它的符号连接的路径名,可从下列表显示可见$ls

–l/bin/lslrwxrwxrwx1rootroot30Nov241998/bin/ls->/opt/K/SCO/Unix/5.0.4Eb/bin/ls长列表显示最后一列数据是文件名和它连接文件的路径名。4.文件别名(文件共享)的演示实验在Linux/UNIX建立一个与DOS一样的列表显示命令dir。①用硬连接格式如下:$ln/bin/ls/usr/lx20/dir执行后ls与dir长列表显示如下:$ls-l/bin/ls-r-xr-xr-t2binbin43296May131997/bin/ls$ls

–ldir-r-xr-xr-t2binbin43296May131997dir可看出硬连接时ls和dir文件的连接数为2,二文件大小相等为43296B。

文件别名(文件共享)的演示实验-1②如用符号连接格式如下:$ln-s/bin/ls/usr/lx20/dir命令执行后ls与dir文件长列表显示如下:$ls

–ldirlrwxrwxrwx1lx20group30Dec2713:34dir->/bin/ls$ls-l/bin/ls-r-xr-xr-t1binbin43296May131997/bin/ls5.3.5子文件系统连结––

UNIX/Linux可装卸子文件系统文件存储器硬盘各盘区和软盘都有一个象倒置的树一样的多级目录的文件系统,MS-DOS系统用“盘符”来识别它们,而UNIX系统,只有一个安装UNIX操作系统的根设备的文件系统常驻系统,而硬盘其它盘区和软盘上的子文件系统直至被安装前,UNIX系统不知道它存在。系统要使用其它的子文件系统,必须先用mount安装命令将其安装到系统。子文件系统连结–1被安装子文件系统的倒树形目录结构的根被安装到根设备文件系统树形目录的某一节点上,与根设备的文件系统的树形目录结构融为一体,构成一个倒置树的多级目录结构。通常这个安装节点所对应的文件是专为安装新文件系统而创建的空子目录,如UNIX根目录下的mnt子目录。新文件系统通过在内存的数据结构(安装表等)与根设备文件系统某节点联系起来,在安装时也将新子文件系统盘的管理块(superblock)和有关目录信息拷贝到内存的系统缓冲区和活动索引节点表。子文件系统连结--2新文件系统必须在安装后才能进行读写,文件创建和删除等操作,其变化要记录在内存系统缓冲区中管理块和活动索引节点表中。而使用完毕后必须使用umount拆卸命令拆卸安装上去的子文件系统,在拆卸时系统将内存系统缓冲中的管理块和活动索引节点表信息拷贝到将拆卸子文件系统的盘中,以保证盘中信息的完整性。子文件系统连结图示SeparateAftermounting(a)(b)(a)Beforemounting.(b)Aftermounting安装表结构和作用图示structmount{intm_flags;dev_tm_dev;structinode*m_inodp;structbuf*m_bufp;structinode*m_mount;}安装表作用图示见下:0#

1#superblcckI=1i-inadeFilsys子文件卷inadeI=123456m-indpm-bufpm-mount根设备内存软盘安装表缓冲池的缓冲区子文件系统连结--3在UNIX系统中一般将硬盘划分为几个区,即为几个文件系统,把系统文件和用户程序分开,以保护数据正确和便于维护。系统启动时,在安装根文件系统后,会根据/etc/fstab逐个安装各区文件系统,在关机前,会逐个拆卸各区文件系统,最常用的其它文件系统为/u,用于存储用户程序。

子文件系统连结演示实验:

在Linux/UNIX系统上读写软盘上信息操作如下:①插入软盘。②使用安装命令安装软盘文件系统:格式:#mount–ttypedevicemount-point例:#mount–tvfat/dev/fd0/mnt③在/mnt目录下读写Windows格式化的软盘上*.txt文件。④使用拆卸的命令卸下软盘文件系统:格式:#umountdevice例:#umount/dev/fd0or#umount/mnt⑤取出软盘。5.3.6虚拟文件系统VFS――

Linux操作系统对多种文件系统的支持Linux采用虚拟文件系统VFS支持许多不同类型的文件系统,VFS是物理系统与服务之间的一个接口层,它屏蔽各类文件系统的差异,给用户和程序提供一个统一的接口。Linux支持ext、ext2、msdos、vfat、iso9660、hpfs等多种文件系统。使用命令mkfs创建各类文件系统。VSF使Linux同时安装支持不同类型的文件系统成为可能。虚拟文件系统VFS―1VFS是物理文件系统与服务之间的一个接口,它对Linux的每一个文件系统的所有细节进行抽象,使得不同的文件系统在Linux内核以及系统中运行的其它进程看来都是相同的,严格说来VFS并不上一种实际的文件系统,它只存在于内存中,不存在于任何外存空间,VFS在系统启动时建立,在系统关闭时消亡。VFS拥有关于各种特殊文件系统的公共接口,如超级块incde,文件操作函数入口等。特殊文件系统的细节问题统一由VFS的公共接口来翻译,它们对系统内核和用户进程是透明的。P213图5-7VFS与实际文件系统的封装关系

ext2FSMINIXFSextFSMSDOSFS

BufferCache

I/O设备驱动

VFS5.3.7内存目录管理

1.目录查询技术

为了实现用户对文件的按名存取,系统必须首先利用用户提供的文件名,对文件目录进行查询,找出该文件的文件控制块FCB,对UNIX系统即要找出该文件的索引节点。然后根据找到的FCB中所记录的文件物理地址,(对UNIX系统即是索引节点中的用于UNIX直接、间接混合寻址的13个地址项di-addr[13]),并根据文件物理组织方式找出文件的盘块号,进而换算出文件在磁盘上的物理位置(柱面号、磁头号、扇区号),最后启动磁盘驱动程序,将所需文件读入内存。目录查询技术-1对目录查询的技术有两种:线性检索法和Hash法。这里介绍UNIX中使用的线性检索法,又称为顺序检索法。下面以在上图所示UNIX树型目录中查找文件/bin/ls为例介绍线性检索法。首先系统读入根索引节点(其索引节点号为1),从文件地址项查找根目录文件所在物理块号读入内存。同时从用户提供的文件名中读入根目录下第一个文件分量bin,用它与根目录文件中各个目录项的文件名顺序地进行比较,从中找到匹配号,得到匹配项的索引节点号为2。目录查询技术-2

然后将磁盘第2个索引节点读入内存,从中找出bin目录文件所在物理块号,并将它读入内存。同时从用户提供的文件名中读入第二个文件分量ls,用它与bin目录文件中目录项的文件名顺序地进行比较,从中找出匹配号,得到匹配项的索引号为10。尔后,将磁盘第10号节点读入内存,从中判断ls文件所在的物理块号。目录查询操作到此结束,如果顺序查找过程中发现一个文件分量名未能找到,则仃止查找并送回“文件未找到”信息。

2。内存的目录管理表目录查询必须通过在磁盘上反复搜索来完成,这要化费不少次的盘块I/O,这样大大浪费了CPU处理时间,降低了处理速度。为了减轻盘I/O负担,采用把当前使用的文件目录表目复制到内存,建立内存的目录管理表。这样只要第一次使用某个目录表目时需要盘I/O来完成读入内存,以后使用该目录表目只要在内存目录管理表中进行,不需再进行盘块I/O,提高了处理速度,由于只把正在使用的目录复制到内存而不是全部目录读入内存,所以内存目录所占容量也不大。内存的目录管理表-1UNIX磁盘上的目录分成索引节点和目录文件,在内存中建立活动索引节点表(或称内存索引节点表)和系统打开文件表,分别保存已打开文件的索引节点和文件名内容,同时在每个进程控制块的User区中设置一张用户文件描述表(又称用户/进程打开文件表),每个打开文件在相应的用户文件描述表目中存储一个指向在系统打开文件表中相应表目位置偏移的指针fp。系统打开文件表用来存放已打开文件信息,包括指向内存索引节点表相应表目的指针f_inode,文件读写标志f_flag,文件读写指针*f_offset[2]和访问计数f_count等。内存的目录管理表-2内存索引节点表表目称为内存索引节点,它是相应磁盘索引节点在内存驻留,同时增加了些信息:索引节点号i_number,当前正在访问该索引节点的引用计数i_count,文件所属文件系统逻辑设备号i_dev,链接的前向指针i_forw和后向指针i_back等。用户打开文件表、系统打开文件表和活动索引节点表之间关系如下图所示。i_nlink系统目录中一个文件取了几个不同的文件名f_count几个用户用相同文件名同时来存取同一文件i_count用户用几个不同的文件名(或不同的存取方式)同时来存取同一文件P215图5-8内存的目录管理关系..

.用户文件描述表

fP..............f_inodef_countf_offsetf_flag.............i-counti_addr[o]i_addr[1]...i_addr[12]............进程控制块PCB系统打开文件表内存索引节点表磁盘文件区USER内存的目录管理表图示-1

Therelationbetweenthetable,theopen内存的目录管理表图示-2i-count=2f-count=1内存的目录管理表图示-3i-count=1f-count=23。文件操作与目录管理关系

为了让用户灵活方便和有效地使用文件,文件系统提供许多有关文件的系统调用,即文件操作供用户使用。文件系统提供的常用系统调用有“建立”(create)文件、“打开”(open)文件、“写”(write)文件、“读”(read)文件、“关闭”(close)文件、“删除”(delete)文件等。这些操作与目录管理的数据结构关系密切,下面以UNIX为例说明。文件操作与目录管理关系-1

(1)建立文件当用户提出在某个路径或目录下建立文件时,系统首先检查在该目录下有否相同名的文件,如没有的话则在磁盘目录中登记此文件,对UNIX系统则需给它分配索引节点,以保存文件存放的盘块号,同时在该目录文件中增加一个表目,记录文件名和相应的索引节点号。文件操作与目录管理关系-2

(2)打开文件用户使用文件前必须使用“打开”命令打开文件,“打开”命令的任务是磁盘目录中找到该文件的FCB,拷贝到内存,建立内存的目录管理表。对UNIX系统是找到此文件所在的目录文件的表目和磁盘索引节点,然后将它们拷贝到内存,建立系统打开文件表和活动索引节点表有关表目,同时在PCB的用户打开文件表中增加表目,并建立如前图一样的三个表间的联系。文件操作与目录管理关系-3(3)读/写文件用户(或进程)要读写文件时,利用PCB中用户打开文件表的fP指针可以从三表关系中找到所需读/写的文件所的盘块,在系统打开文件表的表目中设置读写指针f_offset[2]分别记录了进程读/写文件的位置。如在写文件时增加或减少文件所用的磁盘块数,则要修改活动索引节点表的表目中的13个地址项i_addr[13].文件操作与目录管理关系-4(4)关闭文件当对文件操作完成后,或暂时不用,均需及时使用“关闭”命令关闭文件,将已修改的内存文件目录信息及时写回到磁盘目录中,并释放文件的内存目录表目空间供其它进程使用。对UNIX子系统,关闭文件,将文件在系统打开文件表和活动索引表的表目内容分别写回到磁盘的相应目录文件和索引节点表区,并删除相应表目供它用,同时进程打开文件表中相应表目也删除,以免进程打开文件数超过定值。如用户打开文件并进行读写后未关闭文件就退出,或者发生断电情况,这样都可能会造成这次读写修改信息的丢失。文件操作与目录管理关系-5(5)删除文件如文件不需要则要用“删除”命令删除文件,根据用户提出的在某目录下的文件名,命令将该文件在目录文件中的表项和相应的索引节点内容删除,释放供它用。P216图5-9文件操作命令和目录管理数据结构关系

“建立”“打开”“删除”“关闭”

磁盘目录内存目录(练习6)目录文件磁盘索引节点PCB中用户文件描述表系统打开文件表

内存索引节点表读写5.3.9FAT、VFAT文件系统目录结构

1.FAT文件系统目录结构MS-DOS的FAT文件系统文件控制块FCB的长度为32个字节,它的内容及其含义如下:

FCB第0-7位为文件名,其中第一个字节表示目录项的状态,00H从未用过的目录项,E5H已删除文件的目录项,2EH子目录标记项,2EH20H为子目录本身,2EH2EH为其父目录,其它为文件名的首字符。

078ABCF文件名扩展名属性未用未用时间日期起始簇号文件长度(B)

1015161718191A1B1C1FFAT、VFAT文件系统目录结构-1第16H-17H为最后修改时间,第18H-19H为最后修改日期,第1AH-1BH字节为文件第一簇簇号,起始簇号为002H。FCB第0BH字节为属性,共有六种文件属性,其中有些可组合使用,含义如下:例如MS-DOS6.21操作系统文件MS-DOS.SYS的属性为07H。根目录包含的子目录和文件在盘区的根目录区,而子目录所包含的目录和文件以目录文件形式存放。VFAT文件系统目录在FAT文件系统的FCB32个字节的未用位中增加使用:0DH-0FH为创建时间,10H-11H为创建日期,12H-13H为最后存取日期。

B7B6B5B4B3B2B1B0

××更改位子目录卷标位系统隐含只读2.VFAT文件系统目录结构(1)长文件名

Windows98长文件名的目录项由几个MS-DOS的32B目录组成。它用一个表项存放短文件名和这个文件或子目录的其它信息(包括MS-DOSFCB原有的簇号、文件大小,最后修改时间和最后修改日期,还有Windows98增加的创建时间、创建日期和最后存取日期),短文件名的属性是0×20。另外用连续若干个表项存放长文件名,每个表项存放13个字符(使用Unicode编码,不论西文和汉字,每个字符一律占用2个字节。对西文第一个字节存ASCII码,第二个字节存0×00。)VFAT文件系统目录结构-长文件名的表项首字节的二进制数低5位值,分别为00001B、00010B、00011B、……,表示它们的次序,左起第2位为1(也就是在低5位基础上加40H)表示该表项是最后一项。最后项存放13个字符位置多余时,先用2个字节0表示结束,再用FFH填充。长文件名的属性是OFH。长文件名项的第13、27、28字节为0×00,第14字节为短文件名检验和。长文件名Thequickbrown.fox(短文件名为THEQUI~1.FOX)目录项格式如下:VFAT文件系统目录结构-1Windows98VFAT目录结构-2用Debug工具查根目录区找出其目录项显示如下:2171:29A04277006E002E0066-006F000F00077800Bw.n...f.o....x.2171:29B00000FFFFFFFFFFFF-FFFF0000FFFFFFFF................2171:29C00154006800650020-0071000F00077500.T.h.e..q....u.2171:29D0690063006B002000-6200000072006F00i.c.k..b...r.o.2171:29E05448455155497E31-464F5820003CC17BTHEQUI~1FOX.<.{2171:29F06E267B2700002351-6326F409006A0200n&{'..#Qc&...j..Windows98VFAT目录结构-2用Debug工具查根目录区找出其目录项显示如下:2171:29A04277006E002E0066-006F000F00077800Bw.n...f.o....x.2171:29B00000FFFFFFFFFFFF-FFFF0000FFFFFFFF................2171:29C00154006800650020-0071000F00077500.T.h.e..q....u.2171:29D0690063006B002000-6200000072006F00i.c.k..b...r.o.2171:29E05448455155497E31-464F5820003CC17BTHEQUI~1FOX.<.{2171:29F06E267B2700002351-6326F409006A0200n&{'..#Qc&...j..5.4文件存储空间的管理5.4.1磁盘组织磁盘是常用的存储设备,它具有容量大,存取速度快,可以实现随机存取等优点,是现代操作系统的必需存储设备,也是实现虚拟存储器所必需的硬件。1.磁盘物理组织每个磁盘都是由盘片,磁道和扇区组成。磁道是盘片每个表面上的环形区域,柱面是有多个盘片的磁盘上处于同一磁头位置的一组磁道组成。盘片的每一个面有一个磁头,磁头一般都连在一个公用的磁头移动机构--磁臂上,这样所有的磁头都一起移动,每盘片的每个面上的磁头都永远定位在同一逻辑道上。每个磁道被分为扇区的部分,一个扇区是磁盘上最小的物理存储单元,扇区的数据大小永远都是2的幂,并且几乎永远是512B。MS-DOS、Windows98/2000都以簇为单位来开辟存储区,而簇是一个或2的幂次个(2、4、8..)连续的扇区。

柱面扇区磁臂磁头DisksparametersDiskparametersfortheoriginalIBMPCfloppydiskandaWesternDigitalWD18300harddisk磁盘性能概述-22.磁盘的逻辑组织一个物理磁盘在逻辑上可分为几个区域,分区信息存放在主引导块分区表中。分区表中保存磁盘各种分区起始和终止的磁头、柱面、扇区、总的扇区数等信息。在主引导块中有三种类型分区:主分区、扩展区和逻辑分区。主分区是常用的,加载一个操作系统所需文件安装其上,操作系统必须从主分区上引导,一个硬盘上只能有四个主分区。为了突破四个分区的限制,就要在四个分区中创建立一个扩展分区。扩展分区其实是一个逻辑盘,它不能格式化,也不能分配盘符。但可在扩展分区中创建一个或多个逻辑分区,(或称逻辑驱动器),每个逻辑分区分配一个盘符,可以格式化成一个特定的文件系统,MS-DOS、Windows98和WindowsNT可用fdisk命令将硬盘分区。5.4.2磁盘空闲块管理和磁盘碎片整理

为了实现存储空间的分配和回收,系统应为存储空间设置相应的结构以记住存储空间的使用情况,并配以相应算法方便地对存储空间进行分配和回收,下面介绍几种常用的文件存储空间管理方法。1.空闲表法空闲表法属于连读分配方法,它为外存上所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项,其中包括序号、该空闲区的第一盘块号,该区的空闲盘块数等信息,再将所有空闲区按起始盘块号递增的次序排列。UNIXSV操作系统盘对换区空间管理采用空闲表法,它与内存系统页表管理采用同样的数据结构和分配回收算法。空闲表法的缺点是需要专用盘区来存放空闲表,在文件系统中较少采用连续分配。2。位示图法

位示图是利用二进制的一位来表示磁盘中一个块的作用情况,当其值为0时表示对应盘块空闲;值为1时盘块已分配。磁盘上所有盘块都有一个二进制位与之对应,这样,由所有盘块所对应的位形成了一个集合称为位示图,位示图用磁盘块存放,称为位图块。例如:SCOUNIX操作系统盘块大小为1KB,每个位图块有8192位,即每个位图块能管理8MB磁盘空间,要管理大的磁盘空间就需要多个位图块,这就需增设位图索引块,每个位图块块号用4B记录,这样一个位图索引块可管理256个位图块,总共管理2GB大小磁盘空间。位示图法-1位图块在管理的8192块盘块的最前面,位图块中第i个字节(i=0,1,……1023)的第j位(j=0,1……7)管理的块在该图块后块数为N=i*8+j。Windows2000、Linux等操作系统的盘块管理都采用位示图法。位示图的主要优点是位示图描述能力强,位示图较小,可以复制到内存,使查找既方便又快速。很多计算机提供了位操作指令,使位示图查找能够高效进行,能够简单有效地在盘上找到n个连续空闲块。例如Intelx86微处理器系列就有这样的指令:返回指定寄存器的所有位中值为1的第一位。SCOUNIX文件系统磁盘的结构3。空闲块链接法

空闲块链接法是将磁盘上所有空闲盘区链接在一个队列中,称为空闲块链。请求分配时从链头依次摘下适当数目的空闲盘块来分配,回收时将回收空闲盘块链入空闲块链尾部。空闲块链接法的优点是不需专用块存放管理信息,它的缺点是连续分配回收多块空闲块时需增加盘I/O操作。空闲块链接法结构

空闲链表

空闲链头块块号3

空闲链尾块块号20

8

16

10

20

物理块号38161020

4。成组链接法

UNIXSV操作系统采用成组链接法管理磁盘空闲块,该方法是空闲表法和空闲块链接法的结合,具备分配回收方便,不需专用块来存放分配表等优点。成组链接法将磁盘空闲块分成若干组,如将每100个盘块作为一组,该组空闲块总数和各空闲块块号存入下一组的第一个空闲块中。最后不满100块的那组空闲块总数和各空闲块块号记入磁盘区专用管理块的空闲块管理的数据结构:s_nfree和s_free[100]中,如下图所示。

P222图5-11成组链接法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论