第六章 文件管理.

Slides:



Advertisements
Similar presentations
操作系统 Operating System.
Advertisements

PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
第六章 文 件 管 理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理
操作系统教程(第4版) 第六章 文件管理 高等教育出版社 2008年4月.
第八章 文件系统 教学目的与要求: 1.掌握文件、目录等基本概念 2.理解并掌握文件结构、管理、保护与共享 重点与难点:
第八章 磁盘存储器的管理.
第六章 文件管理.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
实用操作系统概念 张惠娟 副教授 1.
Oracle数据库 Oracle 子程序.
文件系统 第8章 文件系统.
第六章    文件管理.
在PHP和MYSQL中实现完美的中文显示
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
存储系统.
走进编程 程序的顺序结构(二).
网络常用常用命令 课件制作人:谢希仁.
李元金 计算机与信息工程学院 第 22 讲 磁盘存储器的管理(1) 李元金 计算机与信息工程学院 1/
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
以ISI平台为例,为您演示一下如何在Endnote文献中查看该文献的References
逆向工程-汇编语言
CPU结构和功能.
第四章 附件 (应用程序软件包).
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
第六章 文件管理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理
从zval看PHP变量
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
操作系统原理与设计 Operating Systems: Design and Implementation
顺序表的删除.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
VB与Access数据库的连接.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
姚金宇 MIT SCHEME 使用说明 姚金宇
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第六章 文 件 管 理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第11章 文件管理.
§6.7 子空间的直和 一、直和的定义 二、直和的判定 三、多个子空间的直和.
操作系统原理 Operating System Principles
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
Visual Basic程序设计 第13章 访问数据库
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
Google的云计算 分布式锁服务Chubby.
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
VB与Access数据库的连接.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
第6章 文件管理 本章学习目标 6.1 文件与文件系统 6.2 文件的逻辑结构 6.3 文件的物理结构 6.4 UNIX系统文件索引结构举例
入侵检测技术 大连理工大学软件学院 毕玲.
第七章 文 件 管 理 7.1 文件和文件系统 7.2 文件的逻辑结构 7.3 文件目录 7.4 文件共享 7.5 文件保护.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
《手把手教你学STM32-STemWin》 主讲人 :正点原子团队 硬件平台:正点原子STM32开发板 版权所有:广州市星翼电子科技有限公司
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

第六章 文件管理

所有的计算机应用程序都要: 存储信息,检索信息 三个基本要求: 能够存储大量的信息 长期保存信息 可以共享信息

解决方法:把信息以一种单元,即文件的形式存储在磁盘或其他外部介质上。 文件是通过操作系统来管理的,包括: 文件的结构,命名,存取,使用,保护和实现方法

两种观点 用户观点: 文件系统如何呈现在其面前:一个文件有什么组成,如何命名,如何保护文件,可以进行何种操作等等 操作系统观点: 文件目录怎样实现,怎样管理存储空间,文件存储位置,磁盘实际运作方式(与设备管理的接口)等等

6.1文件和文件系统 6.1.1 文件、记录、数据项(说明包含关系) 数据项 基本数据项:可命名的最小逻辑单位/字段 6.1.1 文件、记录、数据项(说明包含关系) 数据项 基本数据项:可命名的最小逻辑单位/字段 组合数据项:由若干基本数据项组成 基本数据项的类型和数据 记录 一组相关数据项的集合 关键字:能唯一地标识出记录的基本/组合数据项 文件 具有文件名的一组相关信息的集合。

文件属性包括: 文件 …… 图 文件、 记录和数据项之间的层次关系 文件类型 文件长度 文件物理位置 文件建立时间 …… 记录1 记录2 记录n …… 数据项1 数据项2 数据项m 图 文件、 记录和数据项之间的层次关系

6.1.2 文件类型和文件系统模型 类型 一、按用途分类: 系统文件,用户文件,库文件。 (用户对以上三者的访问权限不同) 6.1.2 文件类型和文件系统模型 类型 一、按用途分类: 系统文件,用户文件,库文件。 (用户对以上三者的访问权限不同) 二、按文件中的数据形式分类 源文件,目标文件,可执行文件。 三、按存取控制属性分类 E,R,R/W

6.1.2 文件类型和文件系统模型 四、按文件组织和处理方式分类 五、按逻辑结构分类 六、按物理结构分类 普通文件 目录文件 6.1.2 文件类型和文件系统模型 四、按文件组织和处理方式分类 普通文件 目录文件 特殊文件/设备文件 五、按逻辑结构分类 有结构(记录式) 无结构(流式) 六、按物理结构分类 顺序文件;数据(连续放) 链接文件; 索引文件;

文件系统模型 概念:文件和对文件进行操纵和管理的软件集合。 三个层:文件(对象及属性)文件操作文件访问接口 文件系统的接口 命令接口 对对象操纵和管理的软件集合 逻辑文件系统 基本I/O管理程序(文件组织模块) 基本文件系统(物理I/O层) I/O控制层(设备驱动程序) 对象及其属性说明 文件 目录 磁盘(磁带)存储空间 文件系统的接口 命令接口 程序接口

文件系统模型 一、管理的对象及属性 二、对对象操纵和管理的软件集合: 三、文件系统接口 (1)文件 (2)目录:例:目录项 用于方便用户(提供文件逻辑名来访问文件)和提高文件存取速度。 (3)物理存贮空间的管理,好坏将影响访问速度。 二、对对象操纵和管理的软件集合: (1)逻辑文件系统:受命write(record of 文件,buf) ->write(逻辑号,buf) (2)基本I/O管理:write(逻辑号, buf) (3)基本文件系统:向driver发令,(buf具体物理盘块号) (4)I/O控制层:driver 三、文件系统接口 命令接口:作为用户与文件系统的接口,用户可以通过键盘终端键入命令,取得文件系统的服务。 程序接口:作为用户程序与文件系统的接口,用户程序可通过系统调用来取得文件系统的服务。

6.1.3 文件操作 一、对记录操作——类似数据库 二、对文件操作: 三、打开关闭操作 四、其它 创/删/读/写/截断(清空)/设置读写位置 6.1.3 文件操作 一、对记录操作——类似数据库 二、对文件操作: 创/删/读/写/截断(清空)/设置读写位置 三、打开关闭操作 打开:将文件的属性从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引)返回给用户 四、其它 更名、更改属性…

对于文件系统,所要考虑的是如何将记录构成一个文件以及将一个文件存储到外存上,相应地,对任何一个文件,都存在着两种形式的结构: ⑴文件的逻辑结构。从用户角度看文件,研究文件的组织形式。又称为文件组织。 ⑵文件的物理结构。是从系统的角度看文件,从文件在物理介质上的存放方式来研究文件。又称为文件的存储结构。 对文件的逻辑结构的要求: ①提高检索效率。 ②便于修改。 ③降低文件存储费用。

6.2 文件逻辑结构 概念:用户所能观察和访问到的文件的数据结构组织,独立于物理特性,容易检索和修改。 6.2 文件逻辑结构 概念:用户所能观察和访问到的文件的数据结构组织,独立于物理特性,容易检索和修改。 无论是逻辑还是物理结构,都会影响到文件的检索速度

6.2.1 逻辑结构类型 一、有结构文件:记录式文件 按记录长度分: (1)定长记录 (2)变长记录 按组织方式分: 6.2.1 逻辑结构类型 一、有结构文件:记录式文件 按记录长度分: (1)定长记录 (2)变长记录 按组织方式分: (1)顺序文件:通常是定长记录(为何,因变长采用此方式查询速度慢) (2)索引文件:索引表 (3)索引顺序文件:顺序组织多个组,每组记录中的第一个记录设置一索引项。

二、无结构文件:流式文件 构成文件的基本单位是字符,文件是有逻辑意义的、无结构的一串字符的集合。 以字节为单位,利用读/写指针进行访问。

6.2.2 顺序文件 一、逻辑记录的排序 二、对顺序文件的读/写操作(图6.3) (1)按记录录入的时间排:串结构。 6.2.2 顺序文件 一、逻辑记录的排序 (1)按记录录入的时间排:串结构。 (2)按关键字排序:顺序结构。 后一种情况更有利于提高查询速度。如可用折半查找法等。 二、对顺序文件的读/写操作(图6.3) 定长记录顺序文件:例:顺序读 易于定位,甚至可随机读取。 变长记录:不易定位,只能顺序读取。

6.2.2 顺序文件 三、优/劣: 批量处理时效率是所有逻辑文件中最高的。 可存在于磁带上。 6.2.2 顺序文件 三、优/劣: 批量处理时效率是所有逻辑文件中最高的。 可存在于磁带上。 交互应用时“效率低”(如要查找单个记录),尤其是对变长记录的顺序文件。 增加、删除记录涉及到排序问题,开销大。 事务文件(log),用于存放将更新到主文件的记录。

6.2.3 索引文件 由变长记录组成的顺序文件不容易直接存取,因此,为其建立一有序的索引表,对索引采用折半查找,速度更快。 6.2.3 索引文件 由变长记录组成的顺序文件不容易直接存取,因此,为其建立一有序的索引表,对索引采用折半查找,速度更快。 特点:提高了速度,增加了存储开销——放索引文件。 增、删记录时,对索引表作相应的修改。 R0 R1 R2 …… Ri Rn 索引号 长度m 指针ptr m0 1 m1 … i mi

6.2.4 索引顺序文件 将顺序文件中若干记录分为一组,每组的第一项在索引表中占一项。 6.2.4 索引顺序文件 将顺序文件中若干记录分为一组,每组的第一项在索引表中占一项。 检索时,先检索索引表,找到所在组中第一个记录的表项,找到其在主文件中的位置,再利用顺序查找法查找主文件 A B C D Key 逻辑地址 A D

速度: 例1:10000个记录, 顺序文件:5000次查找找查到(N/2)。 索引顺序文件,设100个记录一组,索引表的找法设为顺序法的情况下,则查找次数为50+50=100 ( )。 例2:1000000个纪录: 顺序文件: 500000次 一级索引:(100个纪录一组):10000。 二级索引:150(50+50+50)

6.2.5 直接文件和哈希文件 直接文件 键值转换:由记录键值到记录物理地址的转换 哈希文件 A=H(k) 是一种索引链接文件

6.3外存分配方法(文件物理组织) 6.3.1 连续分配(顺序文件)(磁带,磁盘都可采用) 每个文件分配一组相邻盘块。 特点:简单 优点:(1)顺序访问容易且速度快,因磁头移动距离小, 缺点:(1)要求连续空间,一段时间后需整理磁盘以消除外部碎片。(2)必须事先知道长度,文件不易动态增长和删除。

连续分配方式

6.3.2 链接分配(链接文件) 文件离散地分配于各盘块中,以提高外存利用率,文件长度可变,易于增删,只能顺序存取。 一、隐式链接 文件目录表中有 start 块号,每块中有下一块号。(就是形成一个链表。) 特点:只适合于顺序访问,对随机访问效率低,可靠性差。 簇:包含多个块的单位,当以它为单位分配并链接,可减少访问时间,但增大了内部碎片

File start end jeep 8 28 1 2 3 4 5 17 28 9 -1 隐式链接分配方式

6.3.2 链接分配(链接文件) 二、显式链接:把用于链接的指针显式存放在内存的一张表中,查找在内存中进行。 FCB―――>FAT(文件分配表)----->块链 1 2 3 4 3 1 4 2

6.3.3 FAT和NTFS技术 1.FAT12 1) 以盘块为基本分配单位   1) 以盘块为基本分配单位   早期MS-DOS使用的是FAT12文件系统,在每个分区中都配有两张文件分配表FAT1和FAT2,在FAT的每个表项中存放下一个盘块号,它实际上是用于盘块之间的链接的指针,通过它可以将一个文件的所有的盘块链接起来,而将文件的第一个盘块号放在自己的FCB中。

图6-10 MS-DOS的文件物理结构

计算FAT表占用的空间: 对于1.2 MB的软盘,每个盘块的大小为512 B,在每个FAT中共含有2.4 K个表项,由于每个FAT表项占12位,故FAT表占用3.6 KB的存储空间。 答:共有盘块数量:1.2M/512=2.4 K 在FAT的每个表项中存放下一个盘块号,每个盘块需要用一个表项 每个表项占用空间:12bit=1.5B FAT表共占用空间:1.5B*2.4K=3.6 K B

例 假定盘块大小为1KB,硬盘的大小为500MB,采用显式链接的分配方式时,其FAT需占用多少存储空间?如果文件A占用硬盘的第11、12、16、14四个盘块,试画出文件A中各盘块的连接情况及FAT的情况 分析:FAT12 的每个表项对应与磁盘的一个盘块,其中用来存放下一个盘块的块号,故FAT的表项数目由磁盘的物理盘块数决定,而表项的长度由磁盘系统的最大盘号决定,为了地址转换的方便,表项长度通常取半个字节的整数倍。 答:硬盘共500K个盘块,故FAT共有500K个表项,FAT表项最少需要19位,取20位(2.5个字节),因此, FAT需占用存储空间为2.5x500KB=1250KB

FCB 10 11 12 13 14 15 16 17 12 文件名:”A” 首块号:11 16 EOF 14

计算最大磁盘容量。 每个FAT表项为12位,在FAT表中最多允许有4096(212)个表项,如果采用以盘块作为基本分配单位,每个盘块(也称扇区)的大小一般是512字节,那么,每个磁盘分区的容量为2MB (4096×512 B)。同时,一个物理磁盘支持4个逻辑磁盘分区,所以相应的磁盘最大容量仅为8 MB。

  2) 簇的基本概念   为了适应磁盘容量不断增大的需要,在进行盘块分配时,以簇(cluster)为基本单位。簇是一组连续的扇区,在FAT中它是作为一个虚拟扇区,簇的大小一般是2n (n为整数)个盘块。 一个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇仅有一个扇区时,磁盘的最大容量为8 MB;当一个簇包含两个扇区时,磁盘的最大容量可以达到16 MB;当一个簇包含了八个扇区时,磁盘的最大容量便可达到64 MB。

  好处:能适应磁盘容量不断增大的情况。使FAT表占用更少的存储空间,并减少访问FAT表的存取开销,提高文件系统的效率 坏处:会造成更大的簇内零头(它与存储器管理中的页内零头相似)。 FAT12老化,对所允许的磁盘容量存在着严重的限制,已不能满足操作系统发展的需要

  2.FAT16   FAT表的宽度增至16位,能将一个磁盘分区分为65 536 (216)个簇。在FAT16的每个簇中的盘块数为64,则FAT16可以管理的最大分区空间为216 × 64 × 512 = 2GB。    FAT16对FAT12的局限性有所改善,但是当磁盘容量迅速增加时,FAT16所形成的簇内碎片所造成的浪费也越大。例如,当要求磁盘分区的大小为8 GB时,则每个簇的大小达到128 KB,这意味着内部零头最大可达到128 KB。一般而言,对于1~4 GB的硬盘来说,大约会浪费10%~20%的空间。为了解决这一问题,微软推出了FAT32。

  3.FAT32    FAT32是FAT系列文件系统的最后一个产品。每一簇在FAT表中的表项占据4字节(232),FAT表可以表示4294967296项,即FAT32允许管理比FAT16更多的簇。这样就允许在FAT32中采用较小的簇,FAT32的每个簇都固定为4 KB,即每簇用8个盘块代替FAT16的64个盘块,每个盘块仍为512字节,FAT32分区格式可以管理的单个最大磁盘空间大到4 KB×232 = 2 TB?。

  4.NTFS   1) NTFS新特征   NTFS(New Technology File System)是一个专门为Windows NT开发的、全新的文件系统,并适用于Windows 2000/XP/2003。NTFS具有许多新的特征:首先,它使用了64位磁盘地址,理论上可以支持2的64次方字节的磁盘分区;其次,在NTFS中可以很好地支持长文件名,单个文件名限制在255个字符以内,全路径名为32 767个字符;第三,具有系统容错功能,即在系统出现故障或差错时,仍能保证系统正常运行,这一点我们将在6.6节中介绍;第四,提供了数据的一致性;此外,NTFS还提供了文件加密、文件压缩等功能。

  2) 磁盘组织   同FAT文件系统一样,NTFS也是以簇作为磁盘空间分配和回收的基本单位。一个文件占用若干个簇,一个簇只属于一个文件。通过簇来间接管理磁盘,可以不需要知道盘块(扇区)的大小,使NTFS具有了与磁盘物理扇区大小无关的独立性,很容易支持扇区大小不是512字节的非标准磁盘,从而可以根据不同的磁盘选择匹配的簇大小。

  在NTFS文件系统中,把卷上簇的大小称为“卷因子”,卷因子是在磁盘格式化时确定的,其大小同FAT一样,也是物理磁盘扇区的整数倍,即一个簇包含2n(n为整数)个盘块,簇的大小可由格式化命令或格式化程序按磁盘容量和应用需求来确定,可以为512 B、1 KB、2 KB……,最大可达64 KB。对于小磁盘(≤512 MB),默认簇大小为512字节;对于1 GB磁盘,默认簇大小为1 KB;对于2 GB磁盘,则默认簇大小为4 KB。事实上,为了在传输效率和簇内碎片之间进行折中,NTFS在大多数情况下都是使用4 KB。

  对于簇的定位,NTFS是采用逻辑簇号LCN(Logical Cluster Number)和虚拟簇号VCN(Virtual Cluster Number)进行的。LCN是以卷为单位,将整个卷中所有的簇按顺序进行简单的编号,NTFS在进行地址映射时,可以通过卷因子与LCN的乘积,便可算出卷上的物理字节偏移量,从而得到文件数据所在的物理磁盘地址。为了方便文件中数据的引用,NTFS还可以使用VCN,以文件为单位,将属于某个文件的簇按顺序进行编号。只要知道了文件开始的簇地址,便可将VCN映射到LCN。

  3) 文件的组织   在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中。该表是NTFS 卷结构的中心,从逻辑上讲,卷中的每个文件作为一条记录,在MFT 表中占有一行,其中还包括MFT 自己的这一行。每行大小固定为1 KB,每行称为该行所对应文件的元数据(metadata),也称为文件控制字。

  在MFT表中,每个元数据将其所对应文件的所有信息,包括文件的内容等,都被组织在所对应文件的一组属性中。由于文件大小相差悬殊,其属性所需空间大小也相差很大,因此,在MFT表中,对于元数据的1 KB空间,可能记录不下文件的全部信息。所以当文件较小时,其属性值所占空间也较小,可以将文件的所有属性直接记录在元数据中。而当文件较大时,元数据仅记录该文件的一部分属性,其余属性,如文件的内容等,可以记录到卷中的其它可用簇中,并将这些簇按其所记录文件的属性进行分类,分别链接成多个队列,将指向这些队列的指针保存在元数据中。

6.3.3 索引分配(索引文件) 一、单级索引 链接分配问题: 不能高效直接存取; FAT需占较大的内存。 6.3.3 索引分配(索引文件) 一、单级索引 链接分配问题: 不能高效直接存取; FAT需占较大的内存。 概念:为每个文件分配一个索引块,将分配给该文件的所有盘块号记录在索引块中 特点: (1)文件较大时有利。文件较小时浪费外存空间(还需为小文件建索引块) (2)当文件很大时,索引块太多,查找速度减慢 解决:当索引太大时,则需建立多级索引

索引分配

6.3.3 索引分配(索引文件) 二、多级索引 三、混合分配方式(UNIX系统) 两级: 6.3.3 索引分配(索引文件) 二、多级索引 两级: 设一个盘块大小为1k,每个盘块号占4byte。则2级索引存放的文件的盘块号总数为:256×256=64k,故文件的最大长度为64M 三、混合分配方式(UNIX系统) 一、二、多级索引合用

记录块大小为4KB,每个条目占4B,一个索引块中可存放1K个盘块号,则分别计算允许的最大文件长度: 假设某个文件的FCB已在内存,但其它信息均在外存,为了访问该文件的某个位置的内容,最少需要几次访问磁盘,最多需要几次访问磁盘? a)直接地址:10*4KB=40KB //小文件(<40k)则立即读出 b)一次间址:1K*4KB=4MB c)二次间址:1K*1K*4KB=4GB d)三次间址:1K*1K*1K*4KB=4TB 则总共允许的最大文件长度为40KB+4MB+4GB+4TB 最少一次(通过直接地址直接读文件盘块) 最多四次(一次读三次间址块,第二次读二次间址块,第三次读一次间址块,第四次读文件盘块)

6.4 目录管理 文件目录:将文件名―map―外存物理位置,使用户按名存取。 功能: (1)按名存取; (2)提高检索速度; (3)文件共享; (4)允许文件重名。

6.4.1 文件控制块和索引结点 目录文件:其内容为文件目录。 文件目录:文件控制块的有序集合(FDT) 一、文件控制块FCB: 1.基本信息 (1)文件名: (2)文件物理位置:(设备号,盘块号,文件长度) (3)文件逻辑结构 流式 记录式:定长、变长 (4)文件物理结构: 顺序放 离散放:链式、索引式

文件控制块FCB 2.存取控制信息(安全性)。 文件主/核准用户/一般用户存取权限。 3.使用信息类: (1)文件的建立日期/时间; (2)文件上一次修改时间; (3)当前使用信息。 例:DOS 文件名 扩展名 属性 备用 时间 日期 第一块号 盘块数

二、索引结点 1.引入: 索引结点:含文件描述信息。 为何引入:FCB中含:文件名、描述信息,它们较占空间。 例:一个FCB为64byte,一个盘块为1024byte,设文件共有3076个FCB ,因一个盘块只能放1024/64:16个FCB,故文件目录占了3076/16=192个盘块,当要访问某文件,平均调度块数为192/2=96+1=97次。

二、索引结点(UNIX) a.将FCB分为 b.离散存放目录结构 文件名、i(index)节点指针和相应的i节点,其中文件名和i节点指针占16字节(14文件名 2i节点) b.离散存放目录结构 查询时只调入文件名部分,找到后才调入相应节点。 文件名 索引节点编号 文件名1 文件名2 …

2.磁盘索引结点 (1)文件主标识; (2)文件类型; (3)文件存取权限; (4)文件物理地址;(表达出盘块号) (5)文件长度; (6)连接(共享)计数; (7)存取时间。

3.内存索引节点 文件打开后,将磁盘索引结点的内容部分或全部子集拷贝到内存,并增加以下内容。 (1)编号; (2)状态;(上锁、修改) (3)共享计数; (4)逻辑设备号; (5)链接指针:i节点的组织结构。

6.4.2 目录结构 单级目录结构 (1)新建文件时——>有无同名——>加入目录表 (2)删除文件——>回收块——>清除占用目录项 特点: (1)简单 (2)速度慢/不允许重名/不便于共享(不能用不同名字访问同一文件)。

6.4.2目录结构 两级目录结构 MFD+UFD 特点: (1)提高了速度:如:n个用户,每用户最多m个文件,则最坏速度为n+m而非n*m (2)可重名 (3)可共享(但不方便)

6.4.2目录结构 树型目录结构(多级目录)(图6.19) 一、树型目录: 一个目录文件中的目录项可为:目录文件、数据文件 二、路径名:/B/F/J 三、当前目录(又叫工作目录)。 四、增/删除(可/不可删除非空目录)

A B C A B D F E D G A A C J N K J M K A H F

6.4.3 目录查询技术 过程: 文件名——目录项(FCB)或索引结点——盘块号——磁盘物理地址—— 启动磁盘—— 读入内存

60中得/usr/ast/mbox的物理地址 1、线性检索法 查找 /usr/ast/mbox 496号盘块是/user/ast的目录 节点26是/user/ast的目录 根目录 132号盘块是/user的目录 节点6是/user的目录 1 . .. 4 bin 7 dev 14 lib 9 etc 6 usr 8 tmp 26 . 6 .. 64 grants 92 books 60 mbox 81 minik 17 src 132 6 . 1 .. 19 dick 30 erik 51 jim 26 ast 45 bal 496 根中得usr的索引结点号6 6中得usr目录文件为132#; 132#中得/usr/ast的索引结点是26 26中得/usr/ast目录文件为496# 60中得/usr/ast/mbox的物理地址

6.5 文件存储空间管理 解决的问题:如何为新创建的文件分配存储空间? 解决的方法:(分配的基本单位都是磁盘块)。 1、分配方式: (1)连续分配:访问速度高,但会产生外存零头。 (2)离散分配:访问速度慢,但能有效利用外存空间。 2、分配时数据结构 3、分配和回收算法

6.5 文件存储空间管理 6.5.1-1 空闲表法(连续分配方式): 空闲盘块表 分配:首次/循环首次/最佳/最坏 回收:判断是否合并。 6.5.1-1 空闲表法(连续分配方式): 空闲盘块表 分配:首次/循环首次/最佳/最坏 回收:判断是否合并。 由于连续分配比较快,因此对对换空间及小文件的管理适用。 序号 第一空闲盘块号 空闲盘块数 1 2 4

6.5 文件存储空间管理 6.5.2-2 空闲链表法。 1.空闲盘块链 简单 可能该链很长,操作多。 2.空闲盘区链: 6.5.2-2 空闲链表法。 1.空闲盘块链 简单 可能该链很长,操作多。 2.空闲盘区链: 一个盘区含多个盘块,类似于内存分区分配与回收(合并)。 首次适应算法 显式链接

6.5.2 位示图法(可采用连续或离散分配) 1.位图 用二进制的一位来表示磁盘中一个盘块的使用情况 0:空闲;1:已分配。 所有盘块有一个二进制位与之对应,由所有盘块所对应的位构成一个集合,称为位示图 二维数组 Var map: array[1…m,1…n] of bit

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 1 2 3 4 . 1

6.5.2 位示图法 2.盘块的分配: 3.回收 (1)顺序扫描,找一个或一组 值=0 的块。 (2)根据找到的行/列得以盘块号。B=n(i-1)+j (3)修改位图。 3.回收 (1)由磁块号得(i,j) i=(b-1)div n +1; j=(b-1)mod n +1 (2)修改位图: 特点:因不占空间,可放入内存,易于访问。

6.6 文件共享与保护 6.6.1 基于索引结点的共享方式 1、索引结点。 文件的物理地址及其它的文件属性等信息,都放在索引结点之中,在文件目录中只设置文件名及指向相应索引结点的指针。 2、链接计数。表示链接到本索引结点(亦即文件)上的用户目录项的数目。 共享索引结点:当count>1时,这时文件主也不能删文件。否则,指针悬空。 缺点:文件增、改时,其它用户不知,造成新增内容不能共享。

Wang 用户文件目录 Test r 索引节点 count=2 物理地址 Lee 用户文件目录 test Test r

6.6 文件共享与保护 6.6.2 利用“符号链”实现文件共享。 6.6.2 利用“符号链”实现文件共享。 建立一“符号链”文件,在新文件中只包含被链接文件F的路径名,这样的链接方法被称为符号链接。 OS是根据新文件中的路径名读该文件。从而实现文件共享的。 仅原文件指向索引结点,其它链接文件仅包含原文件的路径名,文件主可对原文件删除等。

图 6-25 进程B链接前后的情况

缺点:(1)多次读盘,使每次访问文件的开销大,且增加了启动磁盘的频率; (2)消耗一定的磁盘空间。(由于要为每个用户建立一条符号链)。 优点:可以通过网络连接世界上任何一个地方的文件。(只需提供该文件所在机器的网络地址以及该机器中文件路径即可。)

6.3.3 磁盘容错技术 1、影响文件安全性的主要因素 (1)人为因素:人们有意无意的行为,使文件系统中的数据遭到破坏或丢失。 (2)系统因素:系统的某部分出现异常,使文件系统中的数据遭到破坏或丢失。 (3)自然因素:随着时间的推移存在磁盘上的数据可能发生溢出或逐渐消失。 2、采取措施 (1)采取存取控制机制,防止认为因素造成的不安全性。 (2)通过磁盘容错技术,防止由磁盘部分的故障造成的文件不安全性。 (3)通过后备系统防止由自然因素所造成的文件不安全性。

6.3.3 磁盘容错技术 3、容错技术 (1)容错技术的定义 是通过在系统中设置冗余部件的办法,提高系统可靠性的一种技术。 磁盘容错技术(系统容错技术SFT)则是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。(即当磁盘系统的某部分出现缺陷或故障时,磁盘仍能正常工作,且不造成数据的丢失或错误。

(2)SFT的级别 SFT-1:防止因磁盘表面发生缺陷而引起的数据丢失。 双份目录和双份文件分配表 a) 双份目录:①主目录②备份目录 b)    双份FAT表:①主FAT ②备份FAT 热修复重定向和写后读校验(补救措施) a)    热修复重定向 b)    写后读校验。

SFT-2:防止因磁盘驱动器或磁盘控制器的故障所导致的系统不能正常工作。 磁盘镜像:解决在一台磁盘机故障时的数据保护问题。  实现:在同一磁盘控制器下,再增设一个完全相同的磁盘驱动器。 优缺点:实现了容错功能,但使磁盘的利用率降低50%。 磁盘双工:解决在两台磁盘机故障时的数据保护问题或主机到磁盘控制器之间的故障时的数据保护问题。 特点:(1)每一磁道都有自己独立的通道,可并行将数据写入磁盘;(2)读数据时,采用的是分离搜索技术,从响应快的通道上获得数据,加快了对数据的读取速度。 SFT2的特点:技术复杂,误操作容易造成数据丢失,甚至造成硬件破坏。最好有熟练的专业人员负责。 主机 通道 磁盘 控制 器 磁盘驱动器 主机 通道 磁盘 控制 器 磁盘驱动器

6.7 数据一致性控制 数据一致性问题 软件支持 硬件支持:稳定存储器,冗余

6.7.1 事务 1. 事务的定义 事务是用于访问和修改各种数据项的一个程序单位。 事务也可以被看作是一系列相关读和写操作。被访问的数据可以分散地存放在同一文件的不同记录中,也可放在多个文件中。 操作全部完成时Commit Operation终止事务。 只要有一个操作失败Abort OperationRolled Back 原子性

作业 P246- T19,23,24