计算机操作系统教程 课件第7章-文件系统_第1页
计算机操作系统教程 课件第7章-文件系统_第2页
计算机操作系统教程 课件第7章-文件系统_第3页
计算机操作系统教程 课件第7章-文件系统_第4页
计算机操作系统教程 课件第7章-文件系统_第5页
已阅读5页,还剩69页未读 继续免费阅读

下载本文档

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

文档简介

计算机操作系统ComputerOperatingSystems第七章

文件管理硬盘属于外部设备文件是信息在外存上的组织形式文件管理是指外存数据的管理文件系统文件的逻辑结构文件的物理结构第七章文件管理第七章文件管理132文件与文件系统文件的物理结构磁盘存储空间管理4文件目录文件的逻辑结构为解决这些问题,人们提出“文件”的概念,把信息组织成文件的形式,用文件作为信息的存储和访问单位。在一个操作系统当中,负责处理文件相关事宜的部分,就称为是文件系统。7.1文件与文件系统第5页

文件(file)sort.c定义:是记录在外存上的,具有符号名的,在逻辑上具有完整意义的一组相关信息项的集合。信息项:是构成文件内容的基本单位,可以是一个字符,也可以是一个记录。

磁带磁盘光盘优盘从用户的角度看,文件是逻辑外存的最小分配单元,即信息(数据)只能以文件的形式写入外存。

操作系统将所要处理的信息组织成文件来进行管理。

每个文件都有一个文件名,用户通过文件名来存取文件

文件就是存储在磁盘上的一组相关信息的集合,具有唯一的标识。文件和文件名7.1文件与文件系统文件的命名当一个文件被创建时,必须给它指定一个名字,用户通过文件名来访问文件。命名规则:文件名是一个有限长度的字符串,可以由字母、数字和特殊字符组成。一个文件名一般由两部分组成,中间用句点隔开。

文件名.扩展名文件的分类普通文件(regularfile):包含用户信息的文件;ASCII文件:由一行行的文本组成;二进制文件:非ASCII文件,通常具有某种内部的逻辑结构,为相关的应用程序所了解。目录文件(directory):管理文件系统结构的系统文件。按用途分类系统文件

操作系统本身有关的一些信息(程序或数据)所组成

的文件。库文件

系统提供给用户调用的各种标准过程、函数和应用程

序等。用户文件

用户的信息(程序或数据)所组成的文件。文件类型按文件中的数据形式分类源文件 从终端或输入设备的源程序和数据,以及作为处理结

果的输出数据的文件。目标文件

由各种语言编译程序所输出的相对地址形式的程序文

件。可执行文件

连接装配程序连接后生成的可执行的目标程序文件。文件类型按存取控制分类可执行文件:可以执行但不能读写或修改的文件。只读文件:用户可以读或执行但不能修改的文件。读写文件:用户可以读、写、执行的文件。不保护文件:可以被系统中任一用户使用的文件。按文件的逻辑结构分类有结构文件无结构文件文件类型文件控制块文件控制块(FileControlBlock,FCB):是操作系统为了管理文件而设置的数据结构,存放了文件的所有管理信息。是文件存在的标志;文件控制块的内容一般包括:文件的类型、长度;文件的所有者、文件的访问权限;文件的创建时间、最后访问时间、最后修改时间;文件所在的物理块信息;在Linux中,称为I结点(inode,索引结点)。文件的属性每个文件都有一个名字和它所保存的信息,此外,OS还给每个文件附加了一些其他的信息,这些信息称为文件的属性。常见的一些文件属性:保护信息:谁可以对该文件进行何种操作;创建者:该文件是谁创建的;只读标志位:0表示可读/写,1表示只读;隐藏标志位:0表示普通文件,1表示隐藏文件;系统标志位:0表示普通文件,1表示系统文件;创建时间、最后访问时间、最后修改时间;文件长度。文件的属性信息存放在哪儿?32如何保存在文件中?文件系统模型文件系统接口文件管理系统软件及管理文件所需的数据结构被文件系统管理的文件用户(程序)↓↓↓↓图7-1文件系统模型可以从两种不同的观点来看待文件系统:用户观点:关心的是文件系统所提供的对外的用户接口,包括文件如何命名、如何保护、如何访问(创建、打开、关闭、读、写等);操作系统观点:关心的是如何来实现与文件有关的各个功能模块,包括如何来管理存储空间、文件系统的布局、文件的存储位置等。7.1文件与文件系统文件的控制文件控制指围绕文件属性的控制所进行的文件操作。创建create:创建一个空白的文件;删除delete:删除一个文件,释放磁盘空间;获取文件属性getattributes:读取文件的属性信息;设置文件属性setattributes:设置文件的属性信息;修改文件名rename:改变文件的文件名。文件的访问文件访问指围绕文件内容的读写所进行的文件操作。打开open:在访问一个文件前,必须先打开它;关闭close:在使用完一个文件后,要关闭该文件;读read:从文件中读取数据;写write:把数据写入文件;添加append:添加数据到文件的末尾;定位seek:指定文件访问的当前位置。文件太多了怎么办?不同的应用程序有不同类型的文件,不同的用户有不同的文件,如何对它们进行组织、分类?如何对文件进行管理?当用户需要访问某个文件时,如何根据这个文件名迅速地定位到相应的文件,从而对文件的属性和内容进行各种操作?解决的办法就是:目录。目录目录(directory)也称文件夹(folder),它是一张表格,记录了在该目录下的每一个文件的文件名和其他的一些管理信息。一般情况下,每个文件占用该表格的某一行,即一个目录项(该表格如何存放?);这张表格本身是以文件的形式存放在磁盘上;在目录的管理上,也有相关的系统调用,如:创建目录create;删除目录delete;修改目录名rename;多级目录结构根目录spell目录bin目录programs目录stat文件dist文件mail目录find文件…p目录e目录prog目录copy目录prt目录根目录如何存放?路径名

从根目录到数据文件之间,只有一条唯一的通路。

主目录/目录文件名/数据文件名当前目录

每访问一个文件都要使用从根目录开始搜索直到树叶的数据文件为止,包含各中间子目录的全路径名是相当麻烦的,同时由于一个进程运行时访问的文件大多局限在某个范围,基于这一点,可为每个用户(或每个进程)设置一个“当前目录”,又称“工作目录”。进程对各文件的访问都相对于“工作目录”而设置路径,这称为相对路径,用相对路径可缩短搜索路径,提高搜索速度。7.2文件的逻辑结构文件的逻辑结构,即文件系统提供给用户的文件结构形式,它独立于在外存上的物理存储结构。无结构:整个文件由一序列无结构的字节流组成;第25页

分类:有结构的记录式文件:由一个以上的记录构成。

记录:能被某些应用程序处理的相关字段的集合。由相同或者不同的数据项组成。

定长记录

变长记录7.2文件的逻辑结构记录式文件顺序文件7.2.1

有结构文件的组织索引文件7.2.1

有结构文件的组织索引顺序文件7.2.1

有结构文件的组织哈希文件7.2.1

有结构文件的组织第31页

无结构的流式文件:由一串字符流构成。

在UNIX系统中,所有的文件都被看作是流式文件.即使是有结构的文件,也被视为流式文件,系统不对文件进行格式处理。字符流7.2.2

流文件的组织文件系统字节流用户眼中数据结构用户程序

文件的访问方式随机存取:根据所需访问的字节或记录在文件中的位置,将文件的读写指针直接移至该位置,然后进行存取。每一次存取操作都要指定该操作的起始位置。现代OS都提供随机存取的方式。已访问部分

即将访问部分文件起始位置文件当前位置文件结束位置

块(block)文件的逻辑结构一般是字节流;对于用户而言,可以在这种字节流的基础上,构造自己所需的各种类型的数据结构,如:记录结构、树状结构、线性结构等;对于文件系统而言,必须将这种字节流(一个连续的逻辑地址空间)保存在磁盘的某些扇区中;通常做法:把磁盘空间划分为一个个大小相同的块(block),称为物理块;把该逻辑地址空间也分成大小相同的逻辑块,在文件系统的内部,以块为单位来进行操作;一个物理块由一个或多个连续的扇区组成。小实验文件系统字节流用户眼中用户程序逻辑块物理块硬盘一个磁盘在低级格式化以后,可以用分区软件划分为若干个分区。在分区以后,磁盘的扇区0称为主引导记录(MasterBootRecord,MBR),用来启动计算机,MBR的结尾是一个分区表,记录了每个分区的起始扇区和大小,其中有一个分区为活动分区;在不同的分区中,可以使用不同的文件系统,每一种文件系统在分区中的布局可能各不相同。7.2.3

文件系统的布局一种可能的文件系统布局引导块(分区

引导扇区),

可以为空。分区控制块

块的个数、

大小等参数空闲物

理块的

管理。在文件系统的内部,是如何来实现open、close、read、write等各种系统调用函数的?7.4.4

文件内容的访问1.打开文件在读写一个文件之前,先要打开该文件intopen(char*filename,intflags)//返回fd位向量:Accessmodes(Rd,Wr,…)OpenFlags(Create,…)Operatingmodes(Appends,…)打开文件的作用利用目录结构进行文件名解析,将文件名(路径名)翻译为一个整数fd在进程PCB中的“打开文件表”中增加一项,返回其下标fd在硬盘找到该文件的FCB并读入内存,通过fd可访问该FCB,进而定位各物理块其它工作,如检查文件访问的合法性2.目录检索文件路径名目标目录项根目录Ann目录mail目录给定路径名,找到FCB解析路径名"/Ann/mail/B"需访问几次硬盘?读入根结点的FCB(位于硬盘固定区域)读入根目录的第1个数据块该数据块即为根目录的开始部分的内容,在其中搜索Ann子目录读入"Ann"目录文件的FCB读入"Ann"目录文件的第1个数据块,并在其中搜索"mail"子目录读入"mail"目录文件的FCB读入"mail"目录文件的第1个数据块,并在其中搜索"B"读入"B"目录文件的FCB3.读取文件在打开一个文件后,即可对该文件进行读写,典型的读写操作是:读写该文件从某个位置开始的若干个字节。例如:读取文件的第100~109个字节lseek(fd,100,SEEK_SET);read(fd,buffer,10)012……字节流物理块….FCB地址映射0…100109…逻辑块fd类似何种存储管理方式?跨多个块?文件末尾?连续分配(ContinuousAllocation)要求为每一个文件分配一组相邻的盘块。7.3文件的物理结构(本图摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)7.3.1连续文件7.3文件的物理结构

在每个盘块上设一链接指针,将同属于一个文件的多个离散盘块链接成一个链表,由此所形成的物理文件链接文件。消除了外碎片,可以动态增、删、改。隐式链接在文件目录的每个目录项FCB中含有指向链接文件第一和最后一个盘块的指针 只适用于顺序访问,对随机访问效率极低,可靠性差。7.3文件的物理结构7.3.2链式文件(本图摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)指针数据如何访问第n个逻辑块?7.3文件的物理结构链表结构的缺点:只能进行顺序访问,不能进行随机访问。为了访问一个文件的第n个逻辑块,必须从文件的第一个物理块开始,按照指针所指向的地址,顺序地访问前n个块,即为了得到第n个逻辑块的物理块地址,必须先访问n-1次的硬盘,速度非常慢;每个物理块上的数据存储空间不再是2的整数次幂(指针占用了若干个字节),从而使文件的访问不太方便。7.3文件的物理结构显式链接

把用于链接文件各物理块的指针,显式的存放在内存的一张链接表中,即文件分配表FAT(FileAllocationTable)。不能支持高效的直接存取FAT占用较大的内存空间带有文件分配表的链表结构基本思路:在链表结构的基础上,把每一个物理块当中的链表指针抽取出来,单独组成一个表格,即文件分配表(FileAllocationTable,FAT),并把它放在内存当中。特点:实现了链表指针与文件数据的分离,整个物理块都可以用来存放数据;FAT表放在内存当中,因此,若要随机地访问文件的第n个逻辑块,可以先从FAT表中查到相应的物理块编号(地址),然后再去访问外存,这样只需访问一次外存,速度快。10…

16

25

1

-1

…01910162531jeep…9目录项FAT磁盘1.临时or长久?2.FAT还有何用?7.3文件的物理结构显式链式文件7.3文件的物理结构索引结构:类似于普通页表,把文件的每一个逻辑块所对应的物理块编号直接记录在FCB中,称为I结点(inode,index-node,索引结点)。特点:每一个文件都有一个索引结点;直接实现逻辑块与物理块的映射;只需把那些正被使用的文件的索引结点装入内存即可,不必象FAT表那样须全部装入。7.3文件的物理结构7.3.3索引文件7.3文件的物理结构多级索引文件混合索引文件(本图摘自Silberschatz,GalvinandGagne:“OperatingSystemConcepts”)UFS-UnixFileSystem支持多大的文件?如果要访问任意一个数据块,最多需要访问几次硬盘?12混合索引文件7.4磁盘存储空间管理7.4.1空闲表法

为外存上的所有空闲区建立一张空闲表,每个空闲区对应一个表目,包括序号、该区的起始空闲盘块号、空闲盘块数目等,按起始空闲盘块号排序。

分配:是一种连续分配方式,顺序查找空闲表,找到第一个合适的空闲区,修改空闲表。

回收:将相应块按序填回表中,并与前后合并成大块。 特点:连续存放,易产生碎片。7.4磁盘存储空间管理7.4.1空闲表法空闲表序号第1个空白块号空白块数物理块号1242,3,4,52939,10,11315515,16,17,18,194………7.4磁盘存储空间管理7.4.2空闲链表法空闲盘块链将磁盘上所有空闲存储空间,以盘块为单位链成一个链表。分配:从链首开始,依次摘下适当数目的空闲盘块进行分配。回收:依次链入链尾。特点:分配、回收简单,空闲盘块链可能很长。空闲盘区链将磁盘上所有空闲存储空间,以盘区(包括若干盘块)为单位链成一个链表。分配:查找合适大小的盘区进行分配回收:与前后盘区合并特点:分配、回收复杂,空闲盘区链较短。7.4磁盘存储空间管理7.4.2空闲链表法空闲链表例:Windows文件系统012435678FCBFATDataA33569-1-1-1-1-1-1-1-1-1-1-15-1-1-1-1-1-15-16-1-1-1-15-16eof7.4磁盘存储空间管理7.4.3位示图法

系统为文件存储空间建立一张位示图,如下图。位示图,反映了整个存储空间的分配情况,其中每一位对应一个物理块,“1”表示对应块已被分配,“0”表示对应块为空白。7.4磁盘存储空间管理7.4.3位示图法位示图1000110001111101001000111111111111100011111001000123456789101112131415012位号字号7.4.3位示图法盘块的分配顺序扫描位示图,找到一个或一组为“0”的二进制位将位号、字号转换为盘块号,进行分配:

块号=位数*字号+位号修改位示图,置“1”。盘块的回收将盘块号转换为位号、字号: 字号=块号DIV位数

位号=块号MOD位数修改位示图,置“0”。例:Bitmap012435678FCBBitmapDataA3,5,694700011111000B4,700001001

000(A)3,5,6CC0,1,2,3,511111

1

01

000012357.4磁盘存储空间管理7.4.4成组链接法

文件区中的所有空闲盘块,被分成若干个组,比如,将每100个盘块作为一组。假定盘上共有10000个盘块,每块大小为1KB,其中第201~7999号盘块用于存放文件,即作为文件区,这样,该区的最后一组盘块号应为7901~7999;次末组为7801~7900,…,倒数第二级的盘块号为301~400,第一组为201~300。7

温馨提示

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

最新文档

评论

0/150

提交评论