操作系统课件——文件系统ppt课件.ppt_第1页
操作系统课件——文件系统ppt课件.ppt_第2页
操作系统课件——文件系统ppt课件.ppt_第3页
操作系统课件——文件系统ppt课件.ppt_第4页
操作系统课件——文件系统ppt课件.ppt_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

1、1,第五章 文件管理,2,用户总是把长期要保存的或暂时要保存的大量信息,组织成文件的形式存放在辅助存储器中,成为计算机系统中的软件资源。 用户希望的是能够“按名存取”。 操作系统给我们提供了第五个功能-文件管理,主要有以下内容: 5.1 文件管理基本理论 5.2 Linux文件系统 5.3 Ext系列文件系统 5.4 虚拟文件系统,3,5.1 文件管理基本理论,文件 是具有名字的一组相关信息的有序集合,存放在外部存储器中。 组成:文件名 + 属性 + 文件体 文件名:有限长度的字符串(注意DOS、Windows 、Linux系统文件名) 文件属性:包括文件类型、大小、物理位置、存取控制、建立或

2、修改日期 文件体:,4,文件分类 不同的系统对文件的管理方式不同。 按文件的性质和用途:系统文件,库文件、用户文件 按文件中的数据形式:源文件,目标文件,可执行文件 按存取权限:r,w,x 按照文件的内容:普通文件,目录文件,特别文件(Linux系统中将设备也当作文件对待) ,5,文件系统 是操作系统的一个重要组成部分,实现文件管理的一组程序和所管理的全部文件(文件与目录的集合)以及管理文件所需要的一些数据结构的集合。 文件系统通常以磁盘分区划分,每个分区对应一个独立的文件系统。 文件系统管理的对象:文件+目录+磁盘存储空间 对对象操纵和管理的软件集合:文件管理系统的核心部分。文件系统的功能(

3、按名存取、存储空间管理、共享和保护等)大多是在这一层实现的。,6,1 文件控制块,为了管理文件,文件系统为每个文件建立一个文件控制块(File Control Block,FCB)。,FCB记录了其的使用者和管理者所关心的所有信息(PCB?),包括文件名、大小、存储位置、修改和访问时间、权限等。 一个FCB就是一个文件目录项。 创建新文件时,建立FCB,随着文件的操作,FCB的内容动态更新,文件被删除时,其FCB删除。,7,计算机系统中通常存有大量的文件,系统须采用某种有效的形式来组织和管理这些文件。由于文件与文件的FCB一一对应,因此,管理文件就是管理文件的FCB。,2 目录,文件系统采用目

4、录来组织文件。 目录是FCB的有序集合,通过目录将所有的FCB分层分类地组织在一起,方便了文件的检索操作。 目录本身需要长久保存的,也需以文件的形式存在,即目录文件,内容是一组FCB列表,每个表项(目录项)是一个文件的FCB。 由于目录本身也是文件,因此目录的FCB也可以作为另一个目录中的目录项,从而构成目录的层次关系。,8,目录的主要功能之一 实现文件的“按名存取” 即用户只需提供文件名就可以对文件进行各种操作。,在查找目录过程中,先将存放目录文件的第一个盘块中目录调入内存然后把用户所给定的文件名与目录项(每个文件的FCB)中的文件名逐一比较,若未找到指定文件,便将下一个盘块中的目录项调入内

5、存。,9,很显然,如果存放FCB的目录文件过大(占多个磁盘块),将会导致匹配文件名的过程要多次访问磁盘,导致问题产生的原因就是目录文件的每个目录项即FCB占空间,如何改善?!,检索目录文件过程中只用到文件名,仅当找到一个目录项时才从该目录项中读出该文件的物理地址,而其它一些对该文件进行描述的信息在检索目录时不会用到,故这些信息不需调入内存。 于是,可以将文件名和文件描述信息分开。,引入索引结点! 将文件目录中的每个目录项组成改为文件名和指向该文件所对应结点(索引结点,Index Node,I节点,其中存放文件描述信息单独形成)的指针所构成。,10,引入I结点后,文件目录仅由文件名及指向该文件所

6、对应的i结点的指针所构成。,11,目录的主要功能之二 合理地组织文件。 单级目录:最简单的文件目录结构是在系统中建立一张目录线性表,每个文件占一表目,由文件名和文件的说明和管理信息组成(即其FCB或文件目录项)。,单级目录能够实现“按名存取”,但存在查找速度慢;不允许重名(主要问题);不便于共享等问题。,12,两级目录:系统设置一个主目录(MFD )后,再为每个用户设立一个用户目录(UFD)。MFD的每一项对应一个用户的目录文件,UFD每一项对应一个文件的FCB。,13,多级目录结构:将两级目录结构的层次关系加以推广,就形成了多级目录结构,即树形目录结构。 系统中有一个根目录(或根目录文件),

7、在这个目录中可登记一般文件,也可以登记目录文件,在每个目录文件中可以登记一般文件,也可以登记目录文件, 现在,几乎所有的操作系统都采用树形目录结构,14,3 文件的组织,文件的组织有两种: 文件的逻辑结构-用户对文件的组织方式,是指用户思维中文件的结构。 文件的物理结构-文件在存储介质上的组织形式,主要是指磁盘上文件的结构。,15,文件的逻辑结构 记录式文件(有结构式文件):文件是记录的集合,每个记录由彼此相关的域构成,记录可按顺序编号为记录1,记录2,又分定/不定长记录文件。,流式文件(无结构文件):是相关的有序字符的集合,在其内部不再对信息进行组织划分,文件的长度为所含字符数。,16,17

8、,文件的物理结构 一个文件存储介质,格式化后就分成许多大小相等的单位存储块(物理盘块),在现代计算机系统中,一般来说,每个物理块是一个磁盘的扇区,512字节。并给每个存储块有个编号,称为物理块号。,18,文件的物理结构目前有三种基本结构,即连续文件结构、串联文件结构和索引文件结构。,连续文件结构:文件的数据存放在连续的物理存储块中。,优点:结构简单、实现容易 缺点:不利于文件动态扩充;创建文件时要求给出文件大小,用户不方便,19,串联文件结构:文件信息存于若干不一定连续的磁盘块中。每个物理块的最末一个字(或第一个字)作为链接字,指出后继块号。链首指针存在文件FCB中,文件的结尾块的指针为“”。

9、,优点:文件动态扩充和修改容易(图中蓝线);外存空间利用率高; 缺点:顺序存取效率高,随机存取效率太低,如果访问文件最后的内容,实际上是访问整个文件。(参考上图,理解这句话) 链接文件更适合于小型文件系统。,20,为了克服串联文件的存取效率太低的问题,引入文件映照技术,即把串联文件中的链接字集中在一结构中。 DOS、WINDOWS系统采用(文件分配表),文件分配表(File Allocation Table,FAT) 磁盘格式化后建立,用于记录外存分配,FAT每个表项对应一个盘块(标记为0至N-1),其中用来存放分配给文件的下一个盘块号; 放在内存中,整个系统一张FAT; 分配给某文件的所有物

10、理块都在该表中标出,文件的首块号记入FCB。 显示链接。,21,引入FAT的问题: FAT需占用较大的内存空间,只有将整个FAT表调入内存才能找到对应的盘块号。,示例: 若磁盘大小为1.2M,每个物理块大小为512B,则共有2.4K个FAT表项,则 (回顾存储管理的单级页表的问题),22,索引结构:不连续分配。每个文件建立一张索引表,每个表目指出文件内容与磁盘块号的对应关系 索引结构是当代计算机操作系统中普遍采用的结构,如UNIX系统、LINUX系统。,优点:具备串联结构所有的优点,适合与随机存放 缺点:增加了索引的开销,存取文件时首先要取得索引表,这样就要增加一次访盘操作,降低了文件访问的速

11、度,23,索引表是在建立文件时由文件管理机构自动建立的,并存放在与文件相同的文件卷(如同一磁带或同一盘片)上。乍一看来,存取索引文件要访问2次外存(why?)。,In fact! 在访问索引文件之前,总是首先“打开”其对应的索引表文件,把其索引表文件的一部分读入主存,因此其后对文件的绝大多数访问只要1次访外。 仅当更新索引表到另一部分时,才发生1次二度访外的情况。(回顾快表机制),(回顾页表地址映射) 第1次访问索引表文件,第2次根据索引得到的物理块号再度访问外存。,24,索引表是在建立文件时由文件管理机构自动建立的,并存放在与文件相同的文件卷(如同一磁带或同一盘片)上。乍一看来,存取索引文件

12、要访问2次外存(why?)。,In fact! 在访问索引文件之前,总是首先“打开”其对应的索引表文件,把其索引表文件的一部分读入主存,因此其后对文件的绝大多数访问只要1次访外。 仅当更新索引表到另一部分时,才发生1次二度访外的情况。(回顾快表机制),(回顾页表地址映射) 第1次访问索引表文件,第2次根据索引得到的物理块号再度访问外存。,25,Another Question! (回顾多级页表) 引入多级索引和混合索引。,26,混合索引应用 UNIX system 系统 UNIX system 混合索引动画演示 按文件的长度(占据数据块的个数)分为小文件、中文件、大文件、巨文件,分别对应直接、

13、一次间接、二次间接、三次间接的编址方式。 系统支持的最大文件=(10+256+2562+2563)512B,27,4 文件存储空间的管理,无论程序还是数据都是以文件形式存放在外存上,外存上文件存放的空间叫作“文件存储空间”。 回顾内存空间的管理 对文件存储空间的管理工作包括:建立文件时为文件分配存储空间;删除文件时去配;以及修改文件时动态更新外存空间。 系统将外存空间分成若干大小相等的物理块,以块(or簇)为单位来交换信息。 文件存储空间的管理,实际上就是一个空闲块的组织和管理问题。 三种常用的管理方法:空闲块表、空闲块链、位示图。,28,空闲块表 用空闲区表来管理文件存储空间,做法是系统设置

14、一张表格,表中的每一个表目记录磁盘空间中的一个连续空闲盘区的信息。 表目的内容至少包括:空闲块区首块地址(物理块号)、空白块个数。,29,空闲块表适合于连续组织的文件,因为在分配文件时按文件尺寸申请一组连续的空闲块,撤消文件时归还这组连续的空闲块区。 与可变分区分配算法相似(回顾!),可采用最先适应、最坏适应、最佳适应算法。 由于空闲块区的个数是动态改变的,导致空闲块表目个数不能预先确定,因此可能会产生表目溢出(表较小时)或表目浪费(表较大时)。,30,空闲块链 把所有空闲块的块号用链表的形式连接在一起,适用于各种物理组织的文件。 注意,对空闲块链操作时应互斥。 需要分配空白块时从链首进行,所

15、以在主存中要保存一个链首指针,它指向第一个空白块,当回收时,把回收块挂在空白块链尾上。,31,位示图(bit map) 位示图是外存空间的存储映射图,是系统在内存中划分出的若干字节的集合,用来指示磁盘存储情况。 采用位示图的具体做法是:为所要管理的磁盘设置一张位示图,位示图的大小,由磁盘的总块数决定。 位示图中的每一位(bit)对应外存空间的一个物理块。若该位为“1”,表示对应块被占用;“0”表示空闲。设整个文件空间有n块,那么可用n位构成位示图。,32,例:设某磁盘组共有16个柱面,每个柱面有16个磁头寻道,每个磁道分16个扇区,整个磁盘空间的扇区数为:16*16*16=4096个 若一个扇

16、区被定义为一个存储块,用字长16位的存储单元来构造位示图,共需要256个字。,分配:扫描位示图,找到足够的空闲块(对应位为“0”)分配,并将对应位改为“1”; 回收:将对应的位改为“0”即可。 位示图较小,系统启动时进入内存(全部或部分),因此可实现高速的分配。,NOTE!:必须定时地把主存中的位示图复制到外存保存,以防万一文件系统发生故障,可以依据外存的位示图副本修复文件系统。,33,UNIX系统系列磁盘空间管理方法 成组链接法 UNIX系统采用空闲块成组链接法对磁盘空间的空闲块加以组织。 每100个空闲块划归1组,将各组中的盘块号存放在其前组中的第1个空闲块中,第1组的空闲盘块号放入系统专

17、用的超级块(superblock)中。 第1组不足100块,文件存储空间不会恰好为100的整数倍,所以第1组小于100。 最后组99块,若把超级块看作是最后组的成员,则最后组也是100块。 其他各组均为100块。,34,35,Important! 各组第1块和超级块:登记了下一组的盘块号。 对应设置一个容量为100的堆栈,另设一个栈指针指向栈0单元,栈1单元,其内保存空闲块号。 如果当前栈顶上升到栈99,那么意味着下1组有100个空闲块被链接在一起。 最后组第一块:null标志。,36,空闲块的分配和回收 通过栈指针的变化(栈0栈99)来体现。 分配 超级块是否上锁,是则等待,否则上锁后转;

18、从栈指针指向的栈顶取得空闲块号,若当前栈顶不是栈0单元,则转。否则该块是组中的第1块。而第1块不能直接分配,故转; 栈指针退1,置超级块修改标记并解锁,分配该空闲块号给调用者,返回; 把该块内容复制到超级块中,置超级块修改标记并解锁,把该块分配给调用者,返回。,37,回收 超级块是否上锁,是则等待,否则上锁后转 若栈未满(栈指针栈99)则转,否则转 栈指针进1,空闲块号存入栈顶单元,置超级块修改标记并解锁后返回; 把超级块内的栈复制到当前回收的空闲块中,再将该新空闲块号填入超级块中栈0单元,使栈指针指向栈底,置超级块修改标记并解锁后返回。注意,此时形成了1个新的空闲块组,该组的第1块正是刚回收

19、的空闲块。,38,成组链接法-动画演示,39,成组链接法的优势 空闲块成组链接法不占用额外空间,只是临时借用每组的第1块登记下一组的空闲块号。 分配与回收工作几乎都在主存(超级块)中进行,仅当分完1组或收回满1组时才启动I/O通道工作。 所以该方法在空间、时间开销方面相当节省。,40,5.2 Linux文件系统,Linux继承了Unix文件系统的优秀设计,并结合了一些现代文件系统的先进技术,在开放性、可扩展性和性能方面都十分出色。 Linux文件系统的几个主要特征。 支持多种文件系统:DOS、Windows等OS只支持一种或几种专用的文件系统,而Linux可以支持几乎所有流行的文件系统,使得L

20、inux可以和许多其他OS共存,允许访问其他OS分区中的文件。 树型可挂载目录结构:Linux采用树型目录,并引入分区挂载的概念,系统分区上的文件系统称为根文件系统,其他所有分区的文件系统都要挂载(mount)到根文件系统的某个目录下。 文件、设备统一管理:Linux将设备抽象为文件。,41,Linux使用标准的树型目录结构,无论操作系统管理几个磁盘分区,这样的目录树只有一个。,42,EXT系列是Linux的标准文件系统,系统把它的磁盘分区做为系统的根文件系统,EXT以外的文件系统则安装(mount)在某个目录下,成为系统树型结构中的一个分枝。,43,1 Linux文件系统的结构设计,Linu

21、x文件系统采用分层结构的设计,包括: 磁盘I/O系统层 磁盘高速缓存 磁盘文件系统层(也称实际文件系统) 虚拟文件系统,44,磁盘I/O系统层:是文件系统所依赖的底层模块,用于实现对存储在磁盘上的文件数据的I/O操作,由通用块层、I/O调度程序和设备驱动程序构成。 实际文件系统:Linux默认FS是Ext2-4,支持多种FS。 Linux专用:Ext2-4、JFS、XFS、RFS和NFS; Unix:sysv、ufs、bfs; Minix:minix、XIA; Windows或DOS:FAT、NTFS 虚拟文件系统:为了屏蔽各个文件系统之间的差异,为用户提供访问文件的统一接口,Linux在具体

22、的文件系统上增加了一个称为虚拟文件系统(Virtual File System,VFS)的抽象层,使得不同的文件系统按照同样的模式呈现在用户面前。 磁盘高速缓存:回顾前述知识。,45,5.3 Ext系列文件系统,Ext2(Extended-2):是专为Linux系统设计的,采用的是Unix文件系统的设计思想,运行稳定,存取效率也很高,可支持最大4TB(1T=1024G)的磁盘分区。 2000年以前一直是几乎所有的Linux发行版的默认的文件系统。 Ext2的弱点在于它是一个非日志文件系统,所以不能在系统发生断电或者其他系统故障时保证文件数据的完整性。 Ext3:是一个基于Ext2开发的日志文件

23、系统,具有健全的日志功能,可靠性很高。在非正常关机后,文件系统可在数十秒钟内自行修复。Ext3容量达到32TB,单个文件最大2TB。目前Ext3已被许多Linux发行版作为默认安装的文件系统。 Ext4:最显著的改进是文件和文件系统的大小。Ext4容量达到1024PB(1P=1024T),而文件大小则可达到16TB。,46,1 Ext文件的结构,Ext文件的逻辑结构是无结构的流式文件。基于字节流的概念,使得Linux系统可以把目录、设备等都当作文件来统一对待。 Ext文件的物理结构采用易于扩展的多重索引方式,便于文件动态增长,同时也可以方便地实现顺序和随机访问。,47,Ext文件系统引入索引节

24、点(i节点)来描述文件,Ext文件的FCB分为i节点和目录项两部分描述。 目录文件的各目录项(directory entry)仅由文件名和i节点号(指向该文件的其它属性)构成。 i节点占用一个单独的存储块,包含文件说明信息(属性)和索引表(指向磁盘块)两部分,i节点毁坏则整个文件不可用。,48,Ext3文件的物理结构采用了多重索引方式,i节点中的索引表描述如右图。 索引表011项直接指向磁盘块,称为直接块。 12项是一个指针,指向一个间接索引表,间接索引表中的指针指向数据块(称为间接块)。 同理13项(二次间接)、14项(三次间接)。,示例: Ext2文件系统的默认块大小1KB,则12K以下的

25、小文件,不需要使用间接索引。 大的文件,需要用到间接索。设每个指针占4字节,则一个间接索引表含有256个指针,对应256个间接块。因此,大小在12K268K的文件需要一次间接,同理,更大的文件使用二次间接甚至三次间接指针,得到最大约16GB的文件。,49,2 Ext目录文件,同普通文件一样,每个目录文件对应一个目录项(在其父目录中)以及一个i节点,不同的是,其数据块中存放的不是文件内容而是目录项集合,包含了该目录下的所有文件的目录项(i节点号和文件名)。 头两个目录项是“.”和“.”。,示例: 目录A下含有子目录B和文件C 、D、E。 注意:文件D和E共享,50,3 Ext文件定位,以查找Li

26、nux系统中/home/zhuge/memo文件为例,实现按名查找。,51,5.4 虚拟文件系统(VFS),虚拟文件系统是Linux内核中的一个软件层,用于给用户空间程序提供文件系统接口。它也提供了内核中的一个抽象功能 允许不同的文件系统共存。 VFS只存在于内存中,在系统启动之后才建立完成,并在系统关闭时撤销。VFS必须和实际文件系统一起才能构成一个完整的文件系统。 VFS屏蔽了各种实际文件系统的差异,为用户提供了一种标准的文件操作接口。,52,1 VFS构成,VFS用C语言编写,采用面向对象的程序设计思想,用统一的数据结构在内存中描述各种实际文件系统,包括: VFS超级块(super bl

27、ock):描述文件系统的基本信息,对应实际文件系统的超级块。 VFS目录项(dentry):描述文件的路经分量。 VFS索引节点(inode):描述文件的信息,对应文件的磁盘i节点。 VFS文件(file):描述一个打开的文件,包括文件的当前使用信息。,53,54,55,2 VFS与进程接口,VFS为进程提供了访问文件系统的统一接口。接口由fs_struct和file_struct结构构成。 fs_struct用于建立进程与文件系统间的联系,主要包括文件系统的根目录和当前目录等信息。 file_struct用于建立进程和所有该进程打开的文件之间的联系。,56,3 VFS缓存机制,缓存是在内存中开辟的存储区,用于存放那些可能会重复使用的数据,提高效率。 当VFS需要构造某个对象或存取磁盘数据时,先在缓存中查找。若有就直接使用,否则再启动I/O操作,传输数据

温馨提示

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

评论

0/150

提交评论