第六章 文件管理
Download
1 / 90

第六章 文件管理 - PowerPoint PPT Presentation


  • 109 Views
  • Uploaded on

第六章 文件管理. 6.1 文件和文件系统. 文件系统管理是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。文件指具有文件名的若干相关元素的集合。元素 通常 是记录,记录是一组有意义的数据项的集合。. 6.1.1 文件、记录和数据项. 1 数据项 基本数据项 描述一个对象的某种属性的字符集,原子数据,数据元素或字段。例如学生的基本数据:学号、姓名、年龄、班级 基本数据项有“型”与“值” 组合数据项 由若干基本数据项组成,简称组项。如工资可由基本工资、工龄工资和奖励工资组成. 2 记录 记录是一组相关数据项的集合。如某学生记录,包括某学生的所有数据项。

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about ' 第六章 文件管理' - thane-glenn


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript

6.1 文件和文件系统

  • 文件系统管理是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。文件指具有文件名的若干相关元素的集合。元素通常是记录,记录是一组有意义的数据项的集合。


6 1 1
6.1.1 文件、记录和数据项

  • 1 数据项

    • 基本数据项

      • 描述一个对象的某种属性的字符集,原子数据,数据元素或字段。例如学生的基本数据:学号、姓名、年龄、班级

      • 基本数据项有“型”与“值”

    • 组合数据项

      • 由若干基本数据项组成,简称组项。如工资可由基本工资、工龄工资和奖励工资组成


  • 2 记录

  • 记录是一组相关数据项的集合。如某学生记录,包括某学生的所有数据项。

  • 可以唯一标识记录的一个或几个数据项称为关键字(key)。通常关键字由一个数据项构成,多个数据项构成的关键字是复合关键字。


  • 3 文件

  • 具有文件名的一组相关元素的集合,有两类

    • 有结构文件:由若干相关记录组成

    • 无结构文件:一个字符流

  • 文件具有文件名,按名存取文件

  • 文件属性

    • 文件类型

    • 文件长度

    • 文件物理位置

    • 文件建立时间


6 1 2
6.1.2 文件类型和文件系统模型

  • 1 文件类型

    • 1)按用途分类

      • 系统文件

      • 用户文件

      • 库文件

    • 2)按文件中数据形式分类

      • 源文件

      • 目标文件

      • 可执行文件


  • 2 文件系统文件

  • 文件系统分为三个层次:最低层对象及其属性;中间层对对象进行操纵和管理的软件集合;最高层是文件系统提供给用户的接口。

  • 1)对象及其属性

    • 文件、目录、存储空间

  • 2)对对象操纵和管理的软件集合

    • 文件系统核心

  • 3)文件系统的接口

    • 命令接口

    • 程序接口


6 1 3
6.1.3 文件操作

  • 相关的概念

    • 目录项

      • 用于检索文件的一种数据结构(FCB)

    • 读写指针

编号:0 1 …… i …… n-1

信息项

信息项

……...

信息项

……...

信息项

读写指针


6 1 31
6.1.3 文件操作

  • 1 最基本的文件操作

    • (1)创建文件

    • (2)删除文件

    • (3)读文件

    • (4)写文件

    • (5)截断文件

    • (6)设置文件读/写位置

  • 2 文件的打开和关闭操作

    • “打开文件表”

  • 3 其他文件操作


6.2 文件的逻辑结构

  • 对于任何一个文件,存在两种形式的结构

  • 逻辑结构:

    • 用户对文件的观点和使用常以其编制的组织方式来对待。

  • 物理结构:

    • 文件的存储结构,外存上的存储组织形式

  • 对逻辑结构的要求

    • 1 提高检索速度

    • 2 便于修改

    • 3 降低存储费用


6 2 1
6.2.1 文件逻辑结构的类型

  • 文件的逻辑结构是用户可见结构,可分为:

    • 记录式的有结构文件

      • 定长记录

      • 变长记录

      • 组织形式包括

        • 顺序文件

        • 索引文件

        • 索引顺序文件

    • 字符流式的无结构文件

      • 相关的有序字符的集合。文件的长度即为所含字符数,流式文件不分成记录,而是直接由一连串信息组成。


l1

记录1

l2

记录2

记录1

记录2

l1

l2

l

l

指示记录长度

(a) 变长

(b) 定长


6 2 2
6.2.2 顺序文件

  • 1、逻辑记录的排序

    • (1)串结构:记录按存入时间排列

    • (2)顺序结构:按关键字排列(可利用折半查找等)

  • 2 、对顺序文件的读/写操作

    • 分别设置读指针和写指针


6 2 21
6.2.2 顺序文件

  • 3 、顺序文件的优缺点

    • 适用于对记录的批量存取;

    • 对单个记录的查找不方便;

    • 增加一个记录也比较困难。


6 2 3
6.2.3 索引文件

对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址: Ai=i×L

对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,然后才能按下式计算出第i个记录的首址。假定在每个记录前用一个字节指明该记录的长度,则


6 2 31
6.2.3 索引文件

  • 对于定长记录文件,查找记录和直接存取比较方便,但对于变长记录文件比较困难和低效,所以为变长记录文件建立一张索引表

索引文件的组织


6 2 4
6.2.4 索引顺序文件

  • 将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表。在索引表中为每组中的第一个记录,建立一个索引项,其中含有记录的键值和指向该记录的指针。


6 2 5
6.2.5 直接文件和哈希文件

  • 1 直接文件

    • 根据记录的键值直接得到记录物理地址(键值转换)

  • 2 哈希文件

    • 应用广泛的一种直接文件,利用hash函数,将记录键值转换为相应记录的地址


6.3 外存分配方式

  • 考虑的主要问题是:怎样才能有效的利用外存空间和如何提高对文件的访问速度。常用的分配方式有:

    • 连续分配

    • 链接分配

    • 索引分配


6 3 1
6.3.1 连续分配

  • 为每个文件分配一组相邻接的盘块。一组盘块的地址定义了磁盘上的一段线性地址。

  • 对于这种方式,文件的逻辑组织与物理组织一致。为使系统能找到文件存放的地址,应在目录项的“文件物理地址”字段存放该文件的第一个记录所在的盘块号和文件长度(盘块数)如图:


6 3 11
6.3.1 连续分配

  • 有碎片问题

  • 优缺点:

    • 顺序访问容易

    • 顺序访问速度快

    • 碎片

    • 必须知道文件长度


6 3 2
6.3.2 链接文件

  • 一个文件的信息存放在若干不连续的物理块中,各块之间通过指针连接,前一个物理块指向下一个物理块

  • 优点:提高了磁盘空间利用率

    不存在外部碎片问题

    有利于文件插入和删除

    有利于文件动态扩充

  • 缺点:存取速度慢,不适于随机存取

    可靠性问题,如指针出错

    更多的寻道次数和寻道时间

    链接指针占用一定的空间

  • 分为隐式连接和显式连接


文件目录

文件名 始址 末址

jeep 9 25

0

1

10

2

3

4

5

6

7

8

9

16

10

25

11

12

13

14

15

16

1

17

18

19

20

21

22

23

24

25

-1

26

27

28

29

30

31

磁盘空间的隐式链接分配

1 隐式链接



2 在文件目录的每个目录项中须含有指向链接文件第一个盘块和最后一个盘块的指针。每个盘块含有指向下一个盘块的指针显式链接

显式链接结构



6 3 3
6.3.3 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从索引分配

  • 1 单级索引分配

  • 链接带来的问题

    • 不能高效直接存取,对较大文件必须首先在FAT中查找许多盘块号

    • FAT占用较大内存

  • 解决:不将整个FAT调入内存,将每个文件对应的盘块号,存入文件的索引块 ,该索引块就是一个含有许多盘块号的数组.

  • 问题:花费较多外存,小文件索引块利用率极低


0把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

文件目录

文件名 索引表地址

Jeep 19

9

16

1

10

25

-1

-1

-1

19


  • 2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从多级索引分配

  • 如果文件比较大,一个索引块不足以存储所有盘块号,则需要多个索引块,如果为这些索引块建立索引,变形成了两级索引分配方式。类似的,更大的文件可以使用三级、四级索引方式


  • 3 unix把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从的混合索引分配方式

    • 直接地址、一级索引、两级索引、三级索引的结合。


6.4 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从目录管理

  • 通常通过文件目录实现文件的组织,文件管理的要求

  • (1)实现按名存取

  • (2)提高对目录的检索速度

  • (3)文件共享

  • (4)允许文件重名


6 4 1
6.4.1 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从文件控制块和索引结点

  • 文件控制块(FCB)

    • 描述和控制文件的数据结构

    • 存放了为管理文件所需的所有有关信息。

    • 文件控制块是文件存在的标志

  • 文件目录

    • 文件控制块的有序集合称为文件目录,一个文件控制块就是一个文件目录项。文件目录也被看成一个文件,称为目录文件

一个问题:目录有没有FCB?


1把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从、文件控制块的内容

(1)基本信息类

① 文件名 ; ② 文件物理位置 ;

③ 文件逻辑结构 ; ④ 文件的物理结构

(2) 存取控制信息类

(3) 使用信息类

MS-DOS的文件控制块


2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从索引结点

  • 1)索引结点的引入

  • 文件目录放在外存上,当检索一个文件时需要启动磁盘,将不同磁盘块中的目录项逐一调入内存。设目录文件占用N块盘块,则查找目录项平均调入盘块(N+1)/2

  • 改进:在查找目录时,目录项中只有文件名是必要的。所以可以采取文件名和其他文件描述信息分开存储的办法。文件描述信息单独形成一个称为索引结点的数据结构,简称i结点。目录项的内容变成文件名和指向该文件所对应的i结点的指针所构成。由于目录文件的存储盘块数大大降低


文件控制块把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

文件名

备用

文件名

I

索引结点

备用


把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

UNIX的文件目录


  • 2把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从)磁盘索引结点

    • 文件主标识符

    • 文件类型

    • 文件存取权限

    • 文件物理地址

    • 文件长度

    • 文件连接计数

    • 文件存取时间


  • 3把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从)内存索引结点

  • 文件被打开时,将磁盘索引结点拷贝到内存的索引结点中,内存索引结点增加了以下内容

    • (1)索引结点编号

    • (2)状态

    • (3)访问计数

    • (4)文件所属文件系统的逻辑设备号

    • (5)链接指针


6 4 2
6.4.2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从目录结构

  • 1 单级目录结构

  • 整个文件系统只建立一张目录表,每个文件占一个目录项,目录项中除了文件名、扩展名、文件长度、文件类型、文件物理地址以及其他文件属性外,设置一个状态位,表明每个目录项是否空闲。

文件名

物理地址

文件说明

状态位

文件名1

文件名2


  • 单级目录的优缺点把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

  • 优点:

    • 简单,实现按名存取

  • 缺点

    • 查找速度慢

    • 不允许重名

    • 不便于文件共享


  • 2把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从、两级目录

  • 可以为每个用户建立一个单独的用户文件目录UFD。这些文件目录具有相似的结构,它由用户所有文件的文件控制块组成。此外在系统建立MFD,在主文件目录中,每个目录文件都占有一个目录项,目录项包括用户名和指向该用户目录文件的指针。


Wang把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

Alpha

Alpha

Test

用户名

指向子目录指针

Test

Wang

Zhang

Zhang

Gao

Report

Report

Test

Test

用户创建和删除文件,os只检查用户的UFD,


  • 两级目录克服了单级目录的缺点,优点有把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

    • (1)提高检索目录的速度

    • (2)不同的UFD中可以使用相同的文件名

    • (3)不同用户可使用不同的文件名访问系统中的同一个共享文件。

  • 缺点是

    • (1)不太适合大量用户和大量文件的大系统

    • (2)增加了系统开销


  • 多级目录结构也称树型目录把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

  • 产生于UNIX操作系统,巳被现代操作系统广泛采用。目录与文件在一起,目录也做成文件

  • 优点:

  • 层次结构清晰,便于管理和保护;有利于文件分类;解决重名问题;提高文件检索速度;能进行存取权限的控制

  • 缺点:

  • 查找一个文件按路径名逐层检查,由于每个文件都放在外存,多次访盘影响速度

  • 3 多级目录结构


1)把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从目录结构

多级目录结构


2) 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从路径名

在树形目录结构中,从根目录到任何数据文件,都只有一条惟一的通路。在该路径上从树的根(即主目录)开始,把全部目录文件名与数据文件名,依次地用“/”连接起来,即构成该数据文件的路径名。系统中的每一个文件都有惟一的路径名。例如,在上图中用户B为访问文件J,应使用其路径名/B/F/J来访问。


3) 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从当前目录

  • 为了提高文件检索速度,文件系统向用户提供了一个当前正在使用的目录,称为当前目录(也称工作目录或值班目录)。查找一个文件可从当前目录开始,使用部分路径名

  • 当前目录可根据需要任意改变。

  • 当前目录一般存放在内存


4把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从)增加和删除目录

(1) 不删除非空目录。当目录(文件)不空时, 不能将其删除,而为了删除一个非空目录,必须先删除目录中的所有文件,使之先成为空目录,后再予以删除。如果目录中还包含有子目录,还必须采取递归调用方式来将其删除,在MS-DOS中就是采用这种删除方式。

(2) 可删除非空目录。当要删除一目录时,如果在该目录中还包含有文件,则目录中的所有文件和子目录也同时被删除。


6 4 3
6.4.3 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从目录查询技术

  • 文件访问过程:利用文件名查询文件目录,根据FCB或i结点所记录的文件物理地址(盘块号),得到文件在磁盘上的物理地址,将文件读入内存。

  • 查询方式

    • 线性检索

    • HASH


1. 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从线性检索法

查找/usr/ast/mbox的步骤


  • 2.Hash把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从方法

    • 利用文件名变换为文件目录索引值

    • 不适用于通配符查询

    • Hash冲突问题

      • 如果对应得目录项空,系统无指定文件

      • 如果文件名匹配,找到

      • 发生冲突,hash值加常数进行查找


6.5 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从文件存储空间的管理

  • 内容:

    • 连续分配和离散分配方式

    • 相应数据结构

    • 分配和回收


6 5 1
6.5.1 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从空闲表法和空闲链表法

  • 1 空闲表法

    • (1)空闲表

      • 连续分配方式,系统为磁盘上的空闲区建立一张空闲表,每个空闲区对应一个空闲表项,表项内容包括序号、该空闲区第一个盘块号、该区的空闲盘块数

    • (2)存储空间的分配与回收

      • 采用首次适应算法,循环首次适应算法等。

      • 对换空间一般采用连续分配方式

      • 文件较小时采用连续分配方式


序号把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

第一个空白块号

空白块个数

物理块号

1

2

3

4

2

9

15

4

3

5

2. 3. 4. 5

9.10.11

15.16.17.18.19


  • 2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从空闲链表法

    • (1)空闲盘块链

      • 将磁盘上的所有空闲空间,以盘块为单位拉成一条链。当创造文件需要一块或几块时,就从链头依次取下一块或几块。反之,当回收空间时,把这些空白块依次链到链尾上。这种技术只要在主存中保存一个指针,令它指向第一个空白块。

    • (2)空闲盘区链

      • 将磁盘上的所有空闲盘区拉成一条链。每个盘区上含有本盘区大小的信息。分配采用首次适应算法,回收考虑邻接空闲区的合并。


6 5 2
6.5.2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从位示图法

建立一张位示图,以反映整个存贮空间的分配情况,每一个字的每一位都对应一个物理块。

0:未分配(空白块)

1:已分配


把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

0 1 2 3 …… …… 1415

0

1 1 0 0 …… …… 0 0

1

0 1 0 0 …… …… 1 0

2

……


为了找到把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从N个自由块,就需要搜索位示图,找到N个“ 0”位,再经过一个简单的换算就可得支相应的块地址(物理地址),存贮空间的分配和回收工作较为方便,{0,1}转换。


  • 2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从盘块的分配

    • (1)顺序扫描找到一个或一组值为“0”的二进制位

    • (2)转换成相应盘块号

      • B=n(i-1)+j

    • (3)修改位示图map[I,j]=1


  • 3 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从盘块的回收

    • (1)将回收盘块的盘块号转换为位示图的行号和列号

      • i=(b-1)DIV n+1

      • J=(b-1) MOD n+1

    • (2)修改位示图令map[I,j]=0


6 5 3
6.5.3 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从成组链接法

  • 1 空闲盘块的组织

  • (1)空闲盘块号栈

    • 存放当前可用的一组空闲盘块的盘块号(最多100个)。以及栈中尚有的空闲盘块号数N。N还兼作栈顶指针用。N=100,指向s.free(99)。s.free(0)是栈底,栈慢时栈顶为s.free(99)。

  • (2)文件空闲盘块被分成若干组

  • (3)将一组含有盘块总数N和该组所有盘块号,记入前一组的第一个盘块的s.free(0)~ s.free(99),这样各组的第一个盘块可以链成链。

  • (4)将第一组的盘块总数和所有盘块号记入空闲盘块号栈,作为当前克分配的空闲盘块号。


100把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

99

100

0

400

7999

399

7901

301

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

~

100

300

400

7900

300

299

  • 7999

  • 7899

  • 299

  • 399

202

201

7801

7901

301

201


  • 2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从空闲盘块的分配和回收

  • 分配:首先检查空闲盘块号栈是否上锁,如未上锁从中取出一空闲盘块号,将对应盘块分配给用户,将栈顶下移。若已是栈底,s.free(0),则把新的盘块号栈内容读入,在分配该盘块。最后把栈中的空闲盘块数减1并返回

  • 回收:将回收盘块的盘块号记入空闲盘块号栈的顶部,并执行空闲盘块号数加1的操作。当栈中空闲盘块号数已达100时,将现有栈中的100各盘块号记入新回收的盘块中,再将其盘块号作为新栈底。


6.6 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从文件共享与文件保护

  • 如果系统不提供文件共享,那么凡是需要该文件的用户,都须各自备有此文件的副本,对存储空间造成巨大浪费。

  • 本节介绍两种文件共享的方法:

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

    • 利用符号链实现文件共享


6 6 1

A把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从

B

C

B

B

B

C

C

A

C

C

B

C

C

C

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

  • 不使用索引结点的FCB方式

将共享文件或子目录链接到多

个用户的目录中,此时目录结

构变成了有向非循环图。

文件的物理地址同时存在于B和

C的目录中,如果文件由于B或

C的操作使盘块数发生变化,则

这种变化只反映在执行操作的目

录中,这种变化将不会被共享


6 6 11
6.6.1 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从基于索引结点的共享方式(续)

  • 使用索引结点的FCB方式

Wang用户文件目录

引用索引结点后,除文件名外

的信息存储在i结点上。因此不

管是wang用户还是li用户对文件

进行修改,这种修改对i结点发

生作用。因而这种改变,是其他

用户可见的。

i结点中,有一个链接计数count。

用于表示链接到本索引结点上的

用户目录项的数目。

Test r

Count=2

Li用户文件目录

Test r

Test


6 6 12
6.6.1 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从基于索引结点的共享方式(续)

进程B链接前后的情况


6 6 2
6.6.2 把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从利用符号链实现文件共享

  • 为使B能共享C的一个文件F,可以由系统创建一个LINK类型的新文件,也取名为F,并将F写入B的目录中,以实现B的目录与文件F的链接。在新文件中只包含被链接文件F的路径名。这样的链接方法被成为符号链接。新文件的路径名,被看作是符号链。当B访问这个LINK类文件时,OS根据文件的路径去读文件,实现用户B对文件F的共享。



6 6 3
6.6.3 利用符号链实现文件共享时,只有文件主才拥有指向其索引结点的指针;其他用户只有该文件的路径名。当文件的拥有者删除文件后,磁盘容错技术

  • 使用文件有潜在的不安全因素

    • 人为因素

    • 系统因素

    • 自然因素

  • 确保文件系统安全性的措施

    • 增加存取控制机制

    • 磁盘容错技术

    • 后备系统



  • 1容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。、第一级容错技术SFT-I

  • 主要防止因磁盘表面缺陷所造成的数据丢失。

  • 1)双份目录和文件分配表

    • 磁盘上建立双份文件目录和FAT

    • 一旦由于磁盘表面缺陷造成文件和FAT损坏,系统自动启用备份文件目录和备份FAT,同时在磁盘其他区域建立新的备份

    • 系统每次加电必须对两份目录和FAT进行一致性验证


  • 2容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。)热修复重定向和写后读校验

    • 当磁盘出现缺陷时,采取防止数据写入缺陷盘块的补救措施

      • 热修复重定向 在磁盘中划出一部分作为热修复重定向区,存放坏磁道的待写数据。当发现欲写入盘块是坏的,则将数据写入专门的热修复重定向区

      • 写后读校验 每次写后,都将该数据块读出放入一新缓冲区和内存中原缓冲区数据比较,如一致,则认为成功,否则采用热修复重定向,标记坏盘块。


  • 2容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。、第二级容错技术SFT-II

  • 1)磁盘镜像

同一磁盘控制器下,增设一个完

全相同的磁盘驱动器.

写入数据时,在主磁盘写入数据

后,采用写后校验方式,将数据再

同样写到备份磁盘上.

此方式未能提高I/O速度,磁盘利

用率仅为50%


  • 2容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。、第二级容错技术SFT-II(续)

  • 2)磁盘双工

所谓磁盘双工,是将两台磁盘

驱动器分别接到两个磁盘控

制器上,同样使这两台磁盘机

镜像成对。

具有各自通道,写数据时并行

进行。读数据时从响应快的通

道上取数据,速度快。


6.7 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。数据一致性控制

  • 数据一致性,指把一个数据存到多个文件中,要保证这些数据的一致。

  • 数据一致性要求硬件和软件的支持

    • 硬件:稳定存储器,冗余技术--磁盘双工方式

    • 软件:os和数据库系统中都有体现


6 7 1
6.7.1 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。事务

  • 1 事务的定义

  • 事务是用于访问和修改各种数据项的一个程序单位。可以被看作是一系列相关的读和写操作。

  • 事务是原子性的。

    • 对分布在不同位置上的同一数据进行的读和写(修改)操作全部完成,Commit Operation

    • 如果有一个操作失败,Abort Operation,此时为了防止一些数据已被修改,应该rollback。


6 7 11
6.7.1 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。事务(续)

  • 2 事务记录(Transaction Record)

  • 为了实现事务的原子性修改,一般借助事务记录这种数据结构来实现。这些数据结构放在稳定存储器上,用来记录事务运行时数据项修改的全部信息。又称为运行记录(Log)。记录字段为

    • 事务名 用于标识该事务的惟一名字;

    • 数据项名 它是被修改数据项的惟一名字;

    • 旧值 修改前数据项的值;

    • 新值 修改后数据项将具有的值。

  • 当事务Ti开始执行时,<Ti开始>记录被写入事务记录表中。任何修改操作之前,写一个适当的新记录到事务记录表。当Ti进行托付时,把一个<Ti托付>记录写入事务记录表中。


6 7 12
6.7.1 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。事务(续)

  • 3 恢复算法

  • 系统利用事务记录中记载的数据项,修改前、后的数据,实现恢复算法:

    • (1)undo<Ti> 该过程把所有被Ti修改过的数据,恢复为修改前的值

    • (2)redo<Ti>该过程能把所有被事务Ti修改过的数据,设置为新值

  • 通过事务记录表把尚未清理的事务分成两类

    • (1)各类操作已完成,依据:事务记录中包括<Ti开始><Ti托付>,此时应该redo<Ti>

    • (2)操作未全部完成,依据:只有<Ti开始>,没有<Ti托付>,此时应该undo<Ti>


6 7 2
6.7.2 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。检查点

  • 1 检查点的作用

  • 由于系统中可能存在许多并发执行的事务,因此事务记录表中可能存在许多记录。一旦系统发生故障,清理事务记录非常费时。

  • 检查点(Checkpoints)是事务的顺序的点, 我们保证在该点之前的所有更改都更新到数据文件中去了. 操作时这样的:每隔一定时间进行下述工作:

  • (1)内存中的事务记录表中所有记录输出到稳定存储器

  • (2)内存中的所有已修改数据输出到稳定存储器

  • (3)内存中的<检查点>记录输出到稳定存储器中

  • (4)每当出现一个<检查点>记录,执行恢复操作


6 7 21
6.7.2 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。检查点(续)

  • 2 新的恢复算法

  • 恢复例程首先查找事务记录表,确定在最近检查点以前开始执行的最后的事务Ti。并利用redo和undo过程对它们进行处理。

  • 如果把所有在事务Ti以后开始执行的事务表示为事务集T, 则新的恢复操作要求:对所有在T中的事务TK, 如果在事务记录表中出现了〈TK托付〉记录,则执行redo〈TK〉操作;反之,如果在事务记录表中并未出现〈TK托付〉记录,则执行undo〈TK〉操作。


6 7 3
6.7.3 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。并发控制

  • 事务具有原子性,必须按某种次序依次执行。各事务对数据项的修改是互斥的。这种特性称为顺序性

  • 用于实现事务顺序性的技术称为并发控制

  • 并发控制在数据库系统和文件服务器中使用最多的同步机制是“锁”


  • 1 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。利用互斥锁实现“顺序性”

    • 事务Ti访问一个对象,先获得该对象的互斥锁。如果成功则锁住该对象,对其进行读或写操作,其他事务此时不能访问该对象

    • 事务Ti访问一批对象,应该获得这些对象的互斥锁,以将这些对象全部锁住。成功则对所有对象进行操作,操作完成后将这些锁释放。如果有一个对象被其他事务锁住,则释放已被Ti所住的其他对象。


  • 2 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。利用互斥锁和共享锁实现顺序性

  • 类似于读者-写者问题,共享文件允许一个事务写,多个事务读。所以引出共享锁。共享锁允许多个事务对相应对象进行读操作,不允许任何一个事务对对象执行写操作。

  • Ti对Q执行读操作,只需获得对象Q的共享锁。如果Q被互斥锁锁住,则Ti等待;否则便可获得共享锁对Q执行读操作;Ti对Q执行写操作,须获得Q的互斥锁,若失败,则等待;否则获得互斥锁对Q执行写操作


6 7 4
6.7.4 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。重复数据的数据一致性问题

  • 1 重复文件的一致性

  • Unix类型的目录

文件名

i结点

文件名

i结点

文件1

17

文件1

17 19 40

文件2

22

文件2

22 72 91

文件3

12

文件3

12 30 29

文件4

84

文件4

84 15 66


  • 2 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。盘块号一致性的检查

  • 系统故障可能使空闲块表(链)与FAT产生数据不一致。

  • 为了保证盘块数据结构的一致性,利用软件方法构成一个计数器表,每个盘块占一个表项,(0…N-1)项。计数器表含两组计数器。一组用于记录空闲盘块,一组用于记录已分配盘块。一开始所有表项初始化为0。然后从空闲盘块表中读出盘块号到第一组,从FAT读出盘块号到第二组。两组计数器对应的一对数据应该互补。

  • 几种情况的分析:


检查盘块号一致性情况 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。


检查盘块号一致性情况 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。


  • 3 容错技术是通过在系统中设置冗余部件的方法,来提高系统可靠性的一种技术。磁盘容错技术是通过增加冗余的磁盘驱动器、磁盘控制器等方法,来提高磁盘系统可靠性的一种技术。链接数一致性检查

  • 对于前面提到的unix文件类型目录,对于共享文件,索引结点号在目录中出现多次。另外索引节点中有一个链接计数count,用来指出共享本文件的用户数。这两个数应该一致。

  • 利用一计数器记录文件的索引结点数

  • 如果计数器与count不一致,(两种情况),将count修改成正确值。


ad