操作系统第7章 文件管理.docx
《操作系统第7章 文件管理.docx》由会员分享,可在线阅读,更多相关《操作系统第7章 文件管理.docx(13页珍藏版)》请在冰豆网上搜索。
操作系统第7章文件管理
以前的章节,是操作系统对硬件的控制;
七、八章,是操作系统对软件的控制。
(对软件的控制,即文件!
)
文件管理的逻辑结构,对应第七章。
文件管理的物理结构磁盘,对应第八章。
本章,是OS针对软件的管理(包括程序和数据。
)
在现代计算机系统中,要用到大量的程序和数据,由于内存容量有限,且不能长期保存,故而平时总是把他们以文件的形式存放在外存中,需要时调入内存。
但用户不能够胜任管理文件的工作,于是在OS中又增加了文件管理功能,构成一个文件系统,负责管理在外存上的文件,把文件的存取、共享和保护等手段提供给用户,方便了用户,保证了文件的安全,提高了系统资源的利用率。
7.1文件和文件系统
现代OS中几乎毫无例外的通过文件系统来组织和管理计算机中存储的数据;或者说文件系统的管理功能,是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。
文件则是指具有文件名的若干相关元素的集合。
基于文件系统的概念,可以把数据组成分为数据项、记录和文件三级。
7.1.1数据项、记录和文件
1、文件、记录和数据项之间的关系
2、文件属性
1)文件类型:
可以从不同的角度来规定文件的类型。
如源文件、目标文件及可执行文件。
2)文件长度:
指文件的当前长度,长度的单位可以是字节、字或块,也可能是最大允许的长度。
3)文件的物理位置:
通常是用于指示文件在哪一个设备上及在该设备的哪一个位置的指针。
4)文件的建立时间:
指最后一次的修改时间等。
7.1.2文件名和类型
1、文件和扩展名
1)文件名:
在不同的系统之间,对文件名的规定是不同的。
2)扩展名:
又称后缀名,用于指示文件的类型。
2、文件类型:
1)按用途分类:
系统文件、用户文件和库文件。
2)按文件中数据的形式分类:
源文件、目标文件和可执行文件
3)按存取控制属性分类:
只执行文件、只读文件和读写文件。
7.1.3文件系统的层次结构
1、文件系统模型:
最核心!
!
!
的层次!
!
1)对象及其属性。
文件管理系统的对象有:
文件、目录和磁盘存储空间。
2)对对象操纵和管理的软件集合。
是文件管理的核心部分。
实现了文件系统的大部分功能——
a)对文件存储空间的管理、
b)对文件目录的管理、
c)将文件的地址转换机制、
d)对文件读写管理
e)以及对文件的共享和保护。
3)文件系统的接口。
命令接口(用户与文件系统)和程序接口(用户程序和文件系统)。
7.1.4文件操作
用户通过文件系统所提供的系统调用实施对文件的操作。
最基本的文件操作有:
创建文件、删除文件、读文件、写文件、截断文件和设置文件的读/写位置。
但对于一个实际的OS,为了方便用户使用文件而提供了更多地对文件的操作,如打开和关闭一个文件及改变文件名等操作。
1、文件的“打开”和“关闭”操作
1)所谓“打开”,是指系统将指名文件的属性从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号返回给用户。
以后当用户再要求对该文件操作时,便可利用系统所返回的索引号向系统提出操作请求。
此时可直接利用索引号到打开文件表中查找,避免了再次检索。
这样不仅节省大量检索开销而且显著提高操作速度。
2)当用户不再需要对该文件实施相应的操作时,可利用“关闭”此文件,OS将会把该文件从打开文件表中的表目上删除。
总结:
7.1文件和文件系统
1、文件类型
2、文件系统模型(3层)
对对象操纵和管理的软件集合。
是文件管理的核心部分。
3、文件操作
常见日常应用,OS在正确的前提下,要考虑如何实现才更高效。
打开操作,内存中“打开文件夹”!
!
补充:
磁盘分配的单位——扇区。
总结:
7.1文件和文件系统
4、文件类型
5、文件系统模型(3层)
对对象操纵和管理的软件集合。
是文件管理的核心部分
6、文件操作
常见日常应用,OS在正确的前提下,要考虑如何实现才更高效。
打开操作,内存中“打开文件夹”!
!
7.2文件的逻辑结构“常考填空”
通常文件是由一系列的记录组成的。
文件系统设计的关键要素,是将这些记录构成一个文件的方法,以及将一个文件存储到外存上的方法。
事实上任何一个文件都存在着以下两种形式的结构:
1.文件的逻辑结构。
从用户观点出发所观察到的文件组织形式,是用户可以直接处理的数据及其结构,它独立于文件的物理特性,又称为文件组织。
2.文件的物理结构。
又称为文件的存储结构,是指文件在外存上的存储组织形式。
与存储介质的存储性能和采用的外存分配方式有关。
7.2.1文件逻辑结构的类型
1、按文件是否有结构,可以分为两大类:
1)有结构文件,是指由一个以上的记录构成的文件,故又把它称为记录式文件;
根据记录的长度可将有结构文件,分为定长记录文件;不定长记录文件。
2)无结构文件,这是指由字符流构成的文件,故又称为是流式文件。
如果说大量的数据结构和数据库,是采用有结构的文件形式的话,则大量的源程序、可执行文件、库函数等,所采用的就是无结构的文件形式,即流式文件。
其长度以字节为单位。
对流式文件的访问,则是采用读写指针来指出下一个要访问的字符。
“此句要理解,可能出判断!
!
”
可以把流式文件(无结构)看作是记录文件(有结构)的一个特例。
“将一个字符,看作一个记录时!
!
”
2、根据记录的组织方式分为下列文件:
1)顺序文件。
由一系列记录按某种顺序排列所形成的文件。
通常是定长记录。
2)索引文件。
当记录可变长时,通常为之建立一张索引表,并为每个记录设置一个表项以加快对记录检索的速度。
3)索引顺序文件。
上述两种方式的结合。
为文件建立一张索引表,为每一组记录中的第一个记录设置一个表项。
7.2.2顺序文件
1、按照逻辑记录的排序分为两种:
1)串结构:
各记录之间的顺序与关键字无关。
通常由时间来决定。
2)顺序结构:
文件中的所有记录按关键字排列。
可以按关键字的长短或英文字母顺序排序。
顺序结构的检索效率更高!
!
2、顺序文件的优缺点
优点:
顺序文件的最佳应用场合是在对诸记录进行批量存取时,即每次操作一大批记录。
只有顺序文件才能存储在磁带上,并能有效的工作。
缺点:
1)在交互应用的场合,如果进程操作对象是单个记录,顺序文件的性能就可能很差。
当文件较大时更差。
2)如想增加或删除一个记录都比较困难。
7.2.3记录寻址
为了访问顺序文件中的一条记录,首先应找到该记录的地址。
1.隐式寻址方式:
1)对于定长记录的顺序文件,如果已知当前记录的逻辑地址,很容易确定下一个记录的逻辑地址。
2)
补充:
定长,已知每个记录占多大长度;
变长,已知每个记录占多大长度。
(只不过每个记录的长度不一样而已!
!
!
)
对于变长记录的顺序文件,与顺序读或写时的情况相似,只是每次都需要从正在读(写)的记录中读出该记录的长度。
补充:
定长,已知每个记录占多大长度;
2.显示寻址方式:
1)该方式可用于对定长记录的文件实现直接或随机访问。
因为任何记录的位置都很容易通过记录长度计算出来。
2)而对于可变长度记录的文件则不能利用显示寻址方式实现直接或随机访问,必须增加适当的支持机构方能实现。
7.2.4索引文件
索引文件的组织p230
补充:
1、索引表,是定长的表。
2、索引文件,也可实现定长,也可实现变长对变长记录更合适。
7.2.5索引顺序文件
即有顺序文件的优点,也有索引文件的优点。
索引顺序文件示意图“课本P231”
7.2.6直接文件和哈希文件(看书)
要求掌握:
直接文件和哈希文件属于逻辑结构。
若出题,3个空:
填顺序、索引、索引顺序。
5个空:
加上这两个
1、直接文件
采用前述几种文件结构对记录进行存取时,都须利用给定的记录键值,先对线性表进行检索,以找到指定记录的物理地址。
然而对直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。
换言之,记录键值本身就决定了记录的物理地址,组织直接文件的关键,在于用什么方法进行从记录值到物理地址的转换。
2、Hash文件的逻辑结构
7.3文件目录
通常在现代计算机系统中,都要存储大量的文件。
为了能对这些文件实施有效的管理,必须对它们加以妥善组织,这主要是通过文件目录来实现的。
什么是文件目录?
文件目录也是一种数据结构,用于标识系统中的文件及其物理地址,供检索时使用。
对目录管理的要求如下:
“4个!
!
”
1)实现“按名存取”。
(包括“路径+文件名”)特别关注
2)提高对目录的检索速度。
3)文件共享。
4)允许文件重名。
7.3.1文件控制块和索引结点
为了能对一个文件进行正确的存取,必须为文件设置用于描述和控制文件的数据结构,称之为“文件控制块(FCB)”文件管理程序可借助于文件控制块中的信息对文件施以各种操作。
文件与文件控制块一一对应,而人们把文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。
通常一个文件目录也被看作是一个文件,称为目录文件。
FCB通常含有以下三类信息:
1)基本信息类。
包括:
文件名,文件物理位置,文件逻辑结构,文件的物理结构。
2)存取控制信息类。
包括:
文件主的存取权限,核准用户的存取权限和一般用户的存取权限。
3)使用信息类。
包括:
文件的建立日期和时间、文件上次修改的日期和时间及当前使用信息。
MS-DOS的文件控制块
索引结点
1、索引结点的引入
文件目录通常是存放在磁盘上的,当文件很多时,文件目录要占用大量的盘块。
在检索目录文件的时候,需要将目录调入内存后比较文件名,但是只用到文件名,而不需要其它那些对文件的描述信息。
所以便把文件名与文件信息分开,使文件描述信息单独形成一个索引结点。
(见P234图7-8)
2、磁盘索引结点“不用背!
!
”
这是存放在磁盘上的索引结点。
每个文件有唯一的一个磁盘索引结点,主要包括以下内容:
1)文件主标识符。
2)文件类型。
3)文件存取权限。
4)文件物理地址。
5)文件长度。
6)文件链接计数。
7)文件存取时间。
3、内存索引结点
⏹这是放在内存中的索引结点。
当文件被打开后,将磁盘索引结点拷贝到内存索引结点中以便使用。
比磁盘索引结点又增加了以下内容:
“5个”
索引结点编号;状态;访问计数;文件所属文件系统的逻辑设备号;链接指针。
7.3.2简单的文件目录
目录结构的组织,关系到文件系统的存取速度,也关系到文件的共享性和安全性。
因此,组织好文件的目录是设计好文件系统的重要环节。
目前常用的目录结构形式有单级目录、两级目录和多级目录。
我们分别来介绍。
1、单级目录结构“文件不允许重名”
最简单的目录结构。
整个文件系统中只建立一张目录表,每个文件一个目录项,目录项含有文件相关信息。
状态位表明每个目录项是否空闲。
单级目录特点:
优点:
简单且能实现目录管理的基本功能。
缺点:
1)查找速度慢。
2)不允许重名。
名字过多难于记忆。
多用户环境下重名难以避免。
3)不便于实现文件共享。
2、两级目录结构
为了克服单级目录所存在的缺点,可以为每个用户建立一个单独的用户文件目录UFD。
由该用户所有文件的文件控制块组成。
在系统中再建立一个主文件目录MFD。
在主文件目录中每个用户目录文件都占有一个目录项,其中包括用户名和指向该用户文件的指针。
如图7-10p236。
两级目录的特点:
基本克服了单级目录的缺点,并具有以下优点:
1)提高了检索目录的速度。
2)在不同的目录中可以有相同的文件名。
3)不同用户还可以使用不同的文件名来访问系统中的同一个共享文件。
存在的问题是各用户之间被完全隔离了,无法进行合作。
7.3.3树形结构目录(即多级目录)“效率最高”
1.目录结构
大型系统通常采用三级或三级以上的目录结构,以提高目录的检索速度和文件系统的性能。
多级目录结构又称为树型目录结构,主目录称为根目录,数据文件为树叶,其它目录为结点。
2.路径名。
3.当前目录。
4.多级目录结构见图7-11P237
7.3.4目录查询技术
当用户要访问一个已存文件时,系统首先利用用户提供的文件名对目录进行查询,找出该文件控制块或对应索引结点;然后根据FCB或索引结点中所记录的文件物理地址,换算出文件在磁盘上的物理位置;最后通过磁盘驱动程序,将所需文件读入内存。
目前对目录进行查询的方式有两种:
线性检索法和Hash方法。
线性检索法,又称为顺序检索法。
“再看”
假定用户给定的文件路径是/usr/ast/mbox,则查找过程(看P239查找过程的说明)
7.3文件目录内容回顾
1、目录管理的要求P232
1)实现“按名存取”。
2)提高对目录的检索速度。
3)文件共享。
4)允许文件重名。
2、UNIX文件系统由四部分构成:
3、UNIX目录结构——分层的倒置树状结构
4、目录中的文件如何与磁盘文件对应:
例、某磁盘的文件系统采用混合索引分配方式,其FCB中共有13个地址项,第0~9地址项为直接地址,第10个地址为一次间接地址,第11个地址为二次间接地址,第12个地址为一次间接地址。
若盘块大小为512B,每个盘块号用3B描述,为方便计算设每个盘块最多存170个盘块地址。
问:
1)该文件系统允许文件的最大长度是多少?
2)将文件的字节偏移量5000、15000、150000转换为物理块号和块内地址
3)设某个文件的FCB已在内存,但其他信息均在外存,为了访问该文件中某个位置的内容,最少和最多需几次访问磁盘?
答:
1)、(10+170+170*170+170*170*170)*512B=2471040B
2)、
5000/512,商为9,余数为392。
可从FCB的第9个地址项取得物理块号,块内偏移量为392。
15000/512,商为29,余数为152。
由于9<29<10+170,而29-10=19,故可从FCB的第10个地址项得到一次间址块的地址,并从一次间址块的第19项(即该块的第57~59三个字节中)获得对应的物理块号,块内地址为152.
150000/512,商为292,余数为496。
9+170<292<10+170+170*170,而292-(10+170)=112。
112/170,商为0,余数为112.故可从FCB的第11个地址项得到二次间址块的地址,并从二次间址块的第0项一次间址地址,再从该一次间址的第112项中获得对应的物理块号,块内地址为496.
3)、由于FCB已在内存,为访问文件中某位置的内容,最少需1次访问磁盘(即可通过直接地址直接读文件块);最多需4次访问磁盘(第1次为读3次间址,第2次为读2次间址,第3次为读1次间址,第4次为读文件盘块)。
7.4文件共享
1、关于共享
现代OS中必须提供文件共享手段,即指系统应允许多个用户(进程)共享同一份文件。
这样系统中只需有一份副本。
下面介绍两种文件共享方法。
(1)、基于索引结点的共享方式
1)在树型结构的目录中,当有两个(或多个)用户要共享一个子目录或文件时,必须将共享文件或子目录连接到两个(或多个)用户的目录中,才能方便得找到该文件。
此时该文件系统的目录结构已不再是树型结构,而是个有向非循环图。
见下页图。
包含有共享文件的文件系统示意图:
课本P241
2)如果通过在文件目录中包含文件的物理地址的方法实现共享有很多缺陷。
故采用基于索引结点的共享方式。
基于索引结点的共享方式示意图课本P241图7-14
(2)、利用符号链实现文件共享
如何利用符号链实现共享?
为使B能共享C的一个文件F,可以由系统创建一个LINK类型的新文件,也取名为F,并将F写入B的目录中,以实现B的目录与文件F的链接。
在新文件中只包含被链接文件F的路径名。
这样的链接方法被称为符号链接。
新文件中的路径名,则被看作是符号链,当B要访问被链接的文件F且正要读LINK类新文件时,将被OS截获,OS根据新文件中的路径名去读该文件,于是就实现了B对文件F的共享。
补充:
F文件被共享之后,其父目录会有多个
***第7章大题是写文字的,预测出在7.2文件的逻辑或7.3文件的目录