第六章 文件管理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理

Slides:



Advertisements
Similar presentations
PURSUING EXCELLENCE / TOWARD SUCCESS WUCHANG UNIVERSITY OF TECHNOLOGY
Advertisements

第六章 文 件 管 理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理
操作系统教程(第4版) 第六章 文件管理 高等教育出版社 2008年4月.
第八章 文件系统 教学目的与要求: 1.掌握文件、目录等基本概念 2.理解并掌握文件结构、管理、保护与共享 重点与难点:
第八章 磁盘存储器的管理.
第六章 文件管理.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
第六章 文件管理.
Oracle数据库 Oracle 子程序.
文件系统 第8章 文件系统.
第六章    文件管理.
在PHP和MYSQL中实现完美的中文显示
Hadoop I/O By ShiChaojie.
存储系统.
大学计算机基础 典型案例之一 构建FPT服务器.
管理信息结构SMI.
走进编程 程序的顺序结构(二).
辅导课程六.
网络常用常用命令 课件制作人:谢希仁.
李元金 计算机与信息工程学院 第 22 讲 磁盘存储器的管理(1) 李元金 计算机与信息工程学院 1/
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
文件读写实践 广州创龙电子科技有限公司 01 广州创龙电子科技有限公司
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
科研信息管理工具 Endnote X4 王辉.
第17章 网站发布.
2019/1/12 GDP设计协同 超级管理员操作手册 GDP项目组.
逆向工程-汇编语言
第四章 附件 (应用程序软件包).
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
SOA – Experiment 2: Query Classification Web Service
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
顺序表的删除.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
VB与Access数据库的连接.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第六章 文 件 管 理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理
成绩是怎么算出来的? 16级第一学期半期考试成绩 班级 姓名 语文 数学 英语 政治 历史 地理 物理 化学 生物 总分 1 张三1 115
第11章 文件管理.
iSIGHT 基本培训 使用 Excel的栅栏问题
本节内容 线性地址的管理 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 文件系统 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Visual Basic程序设计 第13章 访问数据库
Touch Github = Touch the World
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第9章 多媒体技术 掌握 Windows 画图工具的基本操作; 掌握 Windows 音频工具进行音频播放;
Python 环境搭建 基于Anaconda和VSCode.
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
_08文件操作 本节课讲师——void* 视频提供:昆山爱达人信息技术有限公司 官网地址:
Google的云计算 分布式锁服务Chubby.
第六章 Excel的应用 五、EXCEL的数据库功能 1、Excel的数据库及其结构 2、Excel下的数据排序 (1)Excel的字段名行
基于列存储的RDF数据管理 朱敏
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
VB与Access数据库的连接.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
第6章 文件管理 本章学习目标 6.1 文件与文件系统 6.2 文件的逻辑结构 6.3 文件的物理结构 6.4 UNIX系统文件索引结构举例
使用Fragment 本讲大纲: 1、创建Fragment 2、在Activity中添加Fragment
RefWorks使用指南 归档、管理个人参考文献.
第七章 文 件 管 理 7.1 文件和文件系统 7.2 文件的逻辑结构 7.3 文件目录 7.4 文件共享 7.5 文件保护.
学习目标 1、什么是列类型 2、列类型之数值类型.
百万行、千万行数据查询教程 老黄牛.
Presentation transcript:

第六章 文件管理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理 第六章 文件管理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理 6.6 文件共享与文件保护 6.7 数据一致性控制

6.1 文件和文件系统 6.1.1 文件、记录和数据项 1. 数据项 基本数据项。这是用于描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,又称为数据元素或字段。 组合数据项。它是由若干个基本数据项组成的,简称组项。 基本数据项除了数据名外,还应有数据类型。因为基本项仅是描述某个对象的属性,根据属性的不同,需要用不同的数据类型来描述。

记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。 2. 记录 记录是一组相关数据项的集合,用于描述一个对象在某方面的属性。一个记录应包含哪些数据项,取决于需要描述对象的哪个方面。 3. 文件 文件是指由创建者所定义的、 具有文件名的一组相关元素的集合,可分为有结构文件和无结构文件两种。 在有结构的文件中,文件由若干个相关记录组成;而无结构文件则被看成是一个字符流。文件在文件系统中是一个最大的数据单位,它描述了一个对象集。 属性可以包括: (1) 文件类型。 (2) 文件长度。 (3) 文件的物理位置。 (4) 文件的建立时间。

6.1.2 文件类型和文件系统模型 文件、 记录和数据项之间的层次关系 1. 文件类型 1) 按用途分类 (1) 系统文件。 (2) 用户文件。 (3) 库文件。 

2) 按文件中数据的形式分类 (1) 源文件。 (2) 目标文件。 (3) 可执行文件。 3) 按存取控制属性分类 (1) 只执行文件。 (2) 只读文件。 (3) 读写文件。

2. 文件系统模型 1) 对象及其属性 文件管理系统管理的对象有: ① 文件。 它作为文件管理的直接对象。 ② 目录。为了方便用户对文件的存取和检索,在文件系统中必须配置目录。对目录的组织和管理是方便用户和提高对文件存取速度的关键。③ 磁盘存储空间。 文件和目录必定占用存储空间,对这部分空间的有效管理,不仅能提高外存的利用率,而且能提高对文件的存取速度。

2) 对对象操纵和管理的软件集合 这是文件管理系统的核心部分。文件系统的功能大多是在这一层实现的,其中包括:对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。 3) 文件系统的接口 为方便用户,文件系统通常向用户提供两种类型的接口: (1) 命令接口。这是指作为用户与文件系统交互的接口。 用户可通过键盘终端键入命令,取得文件系统的服务。 (2) 程序接口。这是指作为用户程序与文件系统的接口。 用户程序可通过系统调用来取得文件系统的服务。

6.1.3 文件操作 1. 最基本的文件操作 (1) 创建文件。 (2) 删除文件。 (3) 读文件。 (4) 写文件。 (5) 截断文件。 (6) 设置文件的读/写位置。

2. 文件的“打开”和“关闭”操作 文件操作过程: (1) 检索目录,找到文件的属性及外存位置; (2) 实施文件操作 所谓“打开”,是指系统将指名文件的属性(包括该文件在外存上的物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(或称为索引)返回给用户。以后, 当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。这样不仅节省了大量的检索开销,也显著地提高了对文件的操作速度。 如果用户已不再需要对该文件实施相应的操作时,可利用“关闭” 系统调用来关闭此文件,OS将会把该文件从打开文件表中的表目上删除掉。

为了方便用户,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类: 3. 其它文件操作 为了方便用户,OS都提供了数条有关文件操作的系统调用,可将这些调用分成若干类: (1) 最常用的一类是有关对文件属性进行操作的,即允许用户直接设置和获得文件的属性,如改变已存文件的文件名、改变文件的拥有者(文件主)、改变对文件的访问权,以及查询文件的状态(包括文件类型、大小和拥有者以及对文件的访问权等); (2) 另一类是有关目录的,如创建一个目录,删除一个目录,改变当前目录和工作目录等;此外,还有用于实现文件共享的系统调用和用于对文件系统进行操作的系统调用等。

6.2 文件的逻辑结构 对于任何一个文件,都存在着以下两种形式的结构: 6.2.1 文件逻辑结构的类型 1. 有结构文件 (1) 文件的逻辑结构(File Logical Structure)。 (2) 文件的物理结构, 又称为文件的存储结构, 是指文件在外存上的存储组织形式。 6.2.1 文件逻辑结构的类型 1. 有结构文件 (1) 定长记录。 (2) 变长记录。 (1) 顺序文件。 (2) 索引文件。 (3) 索引顺序文件。 按记录长度 按组织方式

2. 无结构文件 大量的数据库采用有结构的文件形式,大量的源程序、可执行文件、库函数等,采用无结构的文件形式,即流式文件。 在UNIX系统中,所有的文件都被看作是流式文件;即使是有结构文件,也被视为流式文件;系统不对文件进行格式处理。 6.2.2 顺序文件 1. 逻辑记录的排序 (1) 串结构,各记录之间的顺序与关键字无关。通常的办法是由时间来决定,即按存入时间的先后排列。 (2) 顺序结构,指文件中的所有记录按关键字(词)排列。可以按关键词的长短排序,也可以按英文字母顺序排序。

2. 对顺序文件(Sequential File)的读/写操作 定长和变长记录文件

3. 顺序文件的优缺点 1) 优点: 顺序文件的最佳应用场合,是对诸记录进行批量存取,高效。 2) 缺点: (1) 随机访问效率低。例如,有一个含有104个记录的顺序文件,如果对它采用顺序查找法去查找一个指定的记录,则平均需要查找5×103个记录; 如果是可变长记录的顺序文件,则为查找一个记录所需付出的开销将更大,这就限制了顺序文件的长度。 (2) 增加或删除一个记录较困难。 为了解决这一问题, 可以为顺序文件配置一个运行记录文件(Log File)或称为事务文件(Transaction File), 把试图增加、 删除或修改的信息记录于其中, 规定每隔一定时间,将运行记录文件与原来的主文件加以合并, 产生一个按关键字排序的新文件。

6.2.3 索引文件 1. 对于定长记录文件,如果要查找第i个记录, 可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址: Ai=i×L 2. 对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,然后才能按下式计算出第i个记录的首址。假定在每个记录前用一个字节指明该记录的长度,则

索引文件的组织

6.2.4 索引顺序文件

6.2.5 直接文件和哈希文件 Hash文件的逻辑结构 1. 直接文件 对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。 6.2.5 直接文件和哈希文件 Hash文件的逻辑结构 1. 直接文件 对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。 2. 哈希(Hash)文件

6.3 外存分配方式 6.3.1 连续分配 1. 连续分配方式

2. 连续分配的主要优缺点 连续分配的主要优点如下: 顺序访问容易。 (2) 顺序访问速度快。 连续分配的主要缺点如下: 要求有连续的存储空间。 (2) 必须事先知道文件的长度。

6.3.2 链接分配 1. 隐式链接

2. 显式链接

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

MS-DOS的文件物理结构

(1)每个FAT表项为12位,FAT表最多有4096个表项;   计算以盘块为分配单位的最大磁盘容量: (1)每个FAT表项为12位,FAT表最多有4096个表项; (2)如果以盘块为基本分配单位,每个盘块(也称扇区)的大小一般是512字节,每个磁盘分区的容量为2 MB(4096×512 B); (3)一个物理磁盘支持4个逻辑磁盘分区,所以相应的磁盘最大容量仅为8 MB。 2) 簇的基本概念   簇是一组连续的扇区,在FAT中它是作为一个虚拟扇区,簇的大小一般是2n (n为整数)个盘块,在MS-DOS的实际运用中,簇的容量可以仅有一个扇区(512 B)、…、八个扇区(4 KB)等。一个簇应包含扇区的数量与磁盘容量的大小直接有关。例如,当一个簇包含了八个扇区时,磁盘的最大容量便可达到64 MB。 以簇作为基本的分配单位所带来的最主要的好处是,能适应磁盘容量不断增大的情况。但也会造成更大的簇内零头。

FAT12所存在的问题其根本原因在于,FAT12表最多只允许4096个表项,亦即最多只能将一个磁盘分区分为4096个簇。   对所允许的磁盘容量存在着严重的限制,通常只能是数十兆字节,虽然可以用继续增加簇的大小来提高所允许的最大磁盘容量,但相应的簇内碎片也将随之成倍地增加。此外,它只能支持8+3格式的文件名。 2.FAT16   FAT12所存在的问题其根本原因在于,FAT12表最多只允许4096个表项,亦即最多只能将一个磁盘分区分为4096个簇。 解决方法:增加FAT表的表项数至16位,最大表项数将增至65536个,将一个磁盘分区分为65536(216)个簇。每个簇中可以有的盘块数为4~64,FAT16可以管理的最大分区空间为216 × 64 × 512 = 2048 MB。

  不难看出,改善很有限。当磁盘容量迅速增加时,所形成的簇内碎片所造成的浪费也越大。例如,每个簇的大小128 KB,内部零头最大可达到128 KB。对于1~4GB的硬盘来说,大约会浪费10%~20%的空间。 3.FAT32 FAT32是FAT系列文件系统的最后一个产品。每一簇在FAT表中的表项占据4字节(232),可以表示4 294 967 296项,FAT32的每个簇都固定为4 KB,即每簇用8个盘块代替FAT16的64个盘块,每个盘块仍为512字节,FAT32分区格式可以管理的单个最大磁盘空间大到4 KB×232 = 2 TB。三种FAT类型的最大分区以及所对应的块的大小如图6-11所示。

图6-11 FAT中簇的大小与最大分区的对应关系

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

  2) 磁盘组织 同FAT文件系统一样,NTFS也是以簇作为磁盘空间分配和回收的基本单位。具有了与磁盘物理扇区大小无关的独立性,很容易支持扇区大小不是512字节的非标准磁盘。 在NTFS文件系统中,把卷上簇的大小称为“卷因子”,卷因子是在磁盘格式化时确定的,其大小同FAT一样,也是物理磁盘扇区的整数倍,可以为512B,…,最大可达64KB。 3) 文件的组织   在NTFS中,以卷为单位,将一个卷中的所有文件信息、目录信息以及可用的未分配空间信息,都以文件记录的方式记录在一张主控文件表MFT(Master File Table)中。

6.3.4 索引分配 1. 单级索引分配 链接分配方式虽然解决了连续分配方式所存在的问题, 但又出现了另外两个问题, 即: (1) 不能支持高效的直接存取。要对一个较大的文件进行直接存取,须首先在FAT中顺序地查找许多盘块号。 (2) FAT需占用较大的内存空间。

索引分配方式

2. 多级索引分配 两级索引分配

混合索引方式

(1) 直接地址。 为了提高对文件的检索速度, 在索引结点中可设置10个直接地址项, 即用iaddr(0)~iaddr(9)来存放直接地址。 (2) 一次间接地址。 对于大、中型文件,只采用直接地址是不现实的。为此,可再利用索引结点中的地址项iaddr(10)来提供一次间接地址。这种方式的实质就是一级索引分配方式。在一次间址块中可存放1K个盘块号, 因而允许文件长达4 MB。 (3) 多次间接地址。 当文件长度大于4 MB+40 KB时(一次间址与10个直接地址项), 系统还须采用二次间址分配方式。这时,用地址项iaddr(11)提供二次间接地址。该方式的实质是两级索引分配方式。

6.4 目 录 管 理 6.4.1 文件控制块和索引结点 1. 文件控制块 对目录管理的要求如下: (1) 实现“按名存取”。 6.4 目 录 管 理 对目录管理的要求如下: (1) 实现“按名存取”。 (2) 提高对目录的检索速度。 (3) 文件共享。 (4) 允许文件重名。 6.4.1 文件控制块和索引结点 1. 文件控制块 (1) 基本信息类 ① 文件名 ; ② 文件物理位置 ; ③ 文件逻辑结构 ; ④ 文件的物理结构

2. 索引结点 (2) 存取控制信息类 (3) 使用信息类 MS-DOS的文件控制块 1) 索引结点的引入(UNIX的文件目录) 文件名 索引结点编号 文件名1 文件名2 … …

2) 磁盘索引结点 文件主标识符 (2) 文件类型 (3) 文件存取权限 (4) 文件物理地址 (5) 文件长度 (6) 文件连接计数 (7) 文件存取时间

3) 内存索引结点 (1) 索引结点编号。 用于标识内存索引结点。 (2) 状态。 指示i结点是否上锁或被修改。 (3) 访问计数。 每当有一进程要访问此i结点时, 将该访问计数加1, 访问完再减1。 (4) 文件所属文件系统的逻辑设备号。 (5) 链接指针。 设置有分别指向空闲链表和散列队列的指针。

6.4.2 目录结构 单级目录结构 优点:简单且能实现目录管理的基本功能——按名存取。 缺点: (1) 查找速度慢 (2) 不允许重名 (3) 不便于实现文件共享 文件名 物理地址 文件说明 状态位 文件名1 文件名2 …

2. 两级目录 优点: 提高检索目录的速度 (2) 在不同的用户目录中, 可以使用相同的文件名。 (2) 在不同的用户目录中, 可以使用相同的文件名。 (3) 不同用户可使用不同的文件名来访问系统中的同一个共享文件 。

3. 多级目录结构 (1) 目录结构

(2) 路径名 在树形目录结构中, 从根目录到任何数据文件, 都只有一条惟一的通路。 在该路径上从树的根(即主目录)开始, 把全部目录文件名与数据文件名,依次地用“/”连接起来,构成该数据文件的路径名。 (3) 当前目录(Current Directory)。 把从当前目录开始直到数据文件为止所构成的路径名,称为相对路径名;而把从树根开始的路径名称为绝对路径名。 4. 增加和删除目录 (1) 不删除非空目录。在MS-DOS中就是采用这种删除方式。 (2) 可删除非空目录。

6.4.3 目录查询技术 1. 线性检索法 查找/usr/ast/mbox的步骤

2. Hash方法 一种处理此“冲突”的有效规则是: (2) 如果目录项中的文件名与指定文件名相匹配, 则表示该目录项正是所要寻找的文件所对应的目录项,故而可从中找到该文件所在的物理地址。 (3) 如果在目录表的相应目录项中的文件名与指定文件名并不匹配,则表示发生了“冲突”,此时须将其Hash值再加上一个常数(该常数应与目录的长度值互质),形成新的索引值,再返回到第一步重新开始查找。

6.5 文件存储空间的管理 6.5.1 空闲表法和空闲链表法 1. 空闲表法 (1) 空闲表 (2) 存储空间的分配与回收。 空闲盘区的分配与内存的动态分配类似,同样是采用首次适应算法、循环首次适应算法等。回收时,也采取类似于内存回收的方法, 即要考虑回收区是否与空闲表中插入点的前区和后区相邻接,对相邻接者应予以合并。 序号 第一空闲盘块号 空闲盘块数 1 2 4 9 3 15 5 —

2. 空闲链表法 (1) 空闲盘块链。 (2) 空闲盘区链 6.5.2 位示图法 1. 位示图

2. 盘块的分配 3. 盘块的回收 (1) 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位。 (2) 将所找到的一个或一组二进制位, 转换成与之相应的盘块号。位于位示图第i行、第j列,则其相应的盘块号应按下式计算: b=n(i-1)+j( n代表每行的位数) (3) 修改位示图, 令map[i]][j]=1。 3. 盘块的回收 (1) 将回收盘块的盘块号转换成位示图中的行号和列号。 转换公式为: i=1+(b-1)DIV n j=1+(b-1)MOD n (2) 修改位示图。 令map[i][j]=0。

6.5.3 成组链接法 1. 空闲盘块的组织

2. 空闲盘块的分配与回收 (1) 分配:从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。若该盘块号已是栈底,即S.free(0),这是当前栈中最后一个可分配的盘块号。由于在该盘块号所对应的盘块中记有下一组可用的盘块号,因此,须将栈底盘块号所对应盘块的内容读入栈中,作为新的盘块号栈的内容,并把原栈底对应的盘块分配出去(其中的有用数据已读入栈中)。然后,再分配一相应的缓冲区。最后,把栈中的空闲盘块数减1并返回。 (2) 回收:在系统回收空闲盘块时,将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块数加1操作。当栈中空闲盘块号数目已达100时,表示栈已满,便将现有栈中的100个盘块号,记入新回收的盘块中,再将其盘块号作为新栈底。

6.6 文件共享与文件保护 包含有共享文件的文件系统

6.6.1 基于索引结点的共享方式

进程B链接前后的情况

6.6.2 利用符号链实现文件共享 在利用符号链方式实现文件共享时, 只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户,则只有该文件的路径名,并不拥有指向其索引结点的指针。这样, 也就不会发生在文件主删除一共享文件后留下一悬空指针的情况。 当文件的拥有者把一个共享文件删除后, 其他用户试图通过符号链去访问一个已被删除的共享文件时,会因系统找不到该文件而使访问失败,于是再将符号链删除,此时不会产生任何影响。

6.6.3 磁盘容错技术 (1) 通过存取控制机制来防止由人为因素所造成的文件不安全性。 第一级容错技术SFT-Ⅰ 6.6.3 磁盘容错技术 (1) 通过存取控制机制来防止由人为因素所造成的文件不安全性。 (2) 通过磁盘容错技术, 来防止由磁盘部分的故障所造成的文件不安全性。 (3) 通过“后备系统”来防止由自然因素所造成的不安全性。 第一级容错技术SFT-Ⅰ 1) 双份目录和双份文件分配表 在不同的磁盘上或在磁盘的不同区域中,分别建立(双份)目录表和FAT。 2) 热修复重定向和写后读校验 (1) 热修复重定向(Hot-Redirection)。 (2) 写后读校验(Read after write Verification)方式。

2. 第二级容错技术SFT-Ⅱ 磁盘镜像(Disk Mirroring) (2) 磁盘双工(Disk Duplexing)。

6.7 数据一致性控制 6.7.1 事务 1. 事务的定义 事务是用于访问和修改各种数据项的一个程序单位。 事务也可以被看作是一系列相关读和写操作。 2. 事务记录(Transaction Record) (1) 事务名:用于标识该事务的惟一名字; (2) 数据项名:它是被修改数据项的惟一名字; (3) 旧值:修改前数据项的值; (4) 新值:修改后数据项将具有的值。 3. 恢复算法 (1) undo〈T〉 。该过程把所有被事务Ti修改过的数据,恢复为修改前的值。 (2) redo〈Ti〉。该过程能把所有被事务Ti修改过的数据,设置为新值。 如果系统发生故障, 系统应对以前所发生的事务进行清理。

6.7.2 检查点 1. 检查点(Check Points)的作用 6.7.2 检查点 1. 检查点(Check Points)的作用 引入检查点的主要目的,是使对事务记录表中事务记录的清理工作经常化, 即每隔一定时间便做一次下述工作: (1) 将驻留在易失性存储器(内存)中的当前事务记录表中的所有记录,输出到稳定存储器中; (2) 将驻留在易失性存储器中的所有已修改数据,输出到稳定存储器中; (3) 将事务记录表中的〈检查点〉记录,输出到稳定存储器中; (4) 是每当出现一个〈检查点〉记录时,系统便执行恢复操作。

2. 新的恢复算法 (1) 查找事务记录表,确定在最近检查点以前开始执行的最后的事务; (2) 在找到这样的事务后,再返回去搜索事务记录表,便可找到第一个检查点记录,恢复例程便从该检查点开始,返回搜索各个事务的记录,并利用redo和undo过程对它们进行处理。 如果把所有在事务Ti以后开始执行的事务表示为事务集T, 则新的恢复操作要求是:对所有在T中的事务TK, 如果在事务记录表中出现了〈TK托付〉记录,则执行redo〈TK〉操作; 反之,如果在事务记录表中并未出现〈TK托付〉记录,则执行undo〈TK〉操作。

6.7.3 并发控制 1. 利用互斥锁实现“顺序性” 2. 利用互斥锁和共享锁实现顺序性 6.7.4 重复数据的数据一致性问题 1. 重复文件的一致性 UNIX类型的目录

2. 盘块号一致性的检查

检查盘块号一致性情况

3. 链接数一致性检查 (1) 为每个盘块建立一表项,含有该索引结点号的计数值。检查时,从根目录开始查找,每当遇到该索引结点号时,在该计数器表中相应文件的表项上加1。 (2) 当把所有目录都检查完后,便可将该计数器表中每个表项中的索引结点号计数值与该文件索引结点中的链接计数count值加以比较, 如果两者一致,表示是正确的;否则,便是发生了链接数据不一致的错误。 (3) count值大于计数器表中相应索引结点号的计数值, 后果是使一些已无用户需要的文件仍驻留在磁盘上,浪费了存储空间。解决:用计数器表中的正确的计数值为count重新赋值。 (4) count值小于计数器表中索引结点号计数值,就有潜在的危险。解决:将count值置为正确值。

6.8 WINDOWS 2000/XP文件系统 WINDOWS 2000/XP文件系统概述 分区引导扇区 主控文件表区 文件数据区 FAT文件系统 FAT32的根目录区(ROOT区)不再是固定区域、固定大小,而可以看做数据区的一部分。因为根目录已经改为根目录文件,采用与子目录文件相同的管理方式。 Windows 2000/XP的文件卷结构 NTFS卷结构 分区引导扇区:包含卷的布局、文件系统结构,及引导代码等。 主控文件区:是NTFS卷的管理中心,包含卷上的所有文件、目录及空闲未用簇的管理信息。 文件数据区:在文件数据区的最前面存放NTFS所有的系统文件,其后为主控文件表MFT的镜像文件,最后为根目录、普通文件和子目录,及空闲未用簇的信息。 分区引导扇区 主控文件表区 文件数据区

主控文件表 主控文件表的结构 主控文件表的记录结构 MFT自身的信息、MFT镜像文件 $LogFile:实现可恢复性和安全性功能; 卷文件、属性定义表、根目录、位图文件、引导文件、坏簇文件、安全文件(数据库)、大写文件等 主控文件表的记录结构 由记录头和紧跟其后的一系列<属性,属性值>对组成. 记录头包含一个用于有效性检查的模数、文件生成时的顺序号、文件的引用计数、记录中实际使用的字节数等。 属性包括有名属性和无名属性。

Windows2000/XP文件系统模型 Windows2000/XP文件系统分层模型 设备驱动程序:直接对设备进行I/O操作 中间驱动程序:与低层设备驱动程序一起提供增强功能。 文件系统驱动程序:扩展低层功能,以实现特定的文件系统,如NTFS。 过滤驱动程序:可以位于任两层驱动程序之间。例如,一个网络重定向过滤驱动程序可以截取有关对远程文件的操作,并重定向到远程服务器上。

Windows 2000/XP文件系统驱动程序的组成 (1)本地FSD 支持NTFS、基于FAT的文件系统、光盘文件系统 (2)远程FSD 由客户端FSD与服务器端FSD组成。客户端FSD接受来自本机应用程序的I/O请求,通过过滤驱动程序将其转换为网络文件系统协议命令,然后通过网络发送给服务器端FSD。服务器端FSD监听网络命令,接受网络文件系统协议命令,转交给本地FSD执行 (3)FSD功能 文件系统的操作命令、高速缓存延迟写线程、高速缓存提前读线程、主存缺页处理、主存脏页写线程等。