Bootstrap

《计算机操作系统》——7.文件管理

《计算机操作系统》第四版
逢考必过哈~~~

7.1 文件和文件系统

7.1.1 文件、记录和数据项

1. 数据项

  1. 基本数据项
    用于描述一个对象的某种属性的字符集。最小逻辑单位,即原子数据,又称为数据元素或字段。命名与其属性一致。如描述学生的基本数据项:学号、姓名等。
  2. 组合数据项
    由若干个基本数据项组成,即组项。

基本数据项 = 数据项名+数据类型。如学号/30211

2. 记录

一组相关数据项的集合,用于描述一个对象在某方面的属性。

3. 文件

由创建者所定义的,具有文件名的一组相关元素的集合,分为有结构文件和无结构文件。

  1. 有结构文件:由若干个相关记录组成;
  2. 无结构文件:一个字符流
    在文件系统中是一个最大的数据单位,描述一个对象集。
    属性:文件类型、长度、物理位置、建立时间

在这里插入图片描述

7.1.2 文件名与类型

1. 文件名和扩展名

扩展名指文件的类型

2. 文件类型

  • 按用途分

    系统文件、用户文件、库文件

  • 按文件中数据的形式分

    源文件、目标文件、可执行文件

  • 按存取控制属性分

    只执行文件、只读文件、读写文件

  • 按组织形式和处理方式

    普通文件、目录文件、特殊文件,系统中各类I/O设备,也成为设备文件

7.1.3 文件系统的层次结构

1. 对象及其属性

文件、目录、磁盘(磁带)存储空间

2. 对对象操纵和管理的软件集合(核心)

对文件存储空间的管理、对文件目录的管理、用于将文件的逻辑地址转换为物理地址的机制、对文件读和写的管理,以及对文件的共享与保护等功能。

在这里插入图片描述

3. 文件系统的接口

命令接口、程序接口

7.1.4 文件操作

1. 最基本的文件操作

创建、删除、读、写、设置文件读/写位置

2. 文件的“打开”和“关闭”操作

打开:系统将指名文件的属性(包括物理位置)从外存拷贝到内存打开文件表的一个表目中,并将该表目的编号(索引)返回给用户;以后, 当用户再要求对该文件进行相应的操作时,便可利用系统所返回的索引号向系统提出操作请求。系统这时便可直接利用该索引号到打开文件表中去查找,从而避免了对该文件的再次检索。再用户和指定文件之间建立一个连接。

关闭:OS将会把该文件从打开的文件表删除

3. 其它文件操作

有关对文件属性进行操作的、有关目录的等

7.2 文件的逻辑结构

任何一文件都有以下两种结构:

  1. 文件的逻辑结构:从用户观点观察到的文件组织形式
  2. 文件的物理结构(存储结构):文件在外存上的存储组织形式

7.2.1 文件逻辑结构

1. 按文件是否有结构分类

  1. 有结构文件
    1. 定长记录
    2. 变长记录
  2. 无结构文件(流式文件):源程序、可执行文件等,可看成时记录式文件的特例:一个记录仅有一个字节。

2. 按文件的组织方式分类

  1. 顺序文件(按某种方式排序)
  2. 索引文件
  3. 索引顺序文件(为一组记录中的第一个记录建立索引表项)

7.2.2 顺序文件

1. 排列方式

  1. 串结构:按存入时间先后排序
  2. 顺序结构:按关键字排序

2. 优缺点

批量操作效率高;单个记录查找效率低,插入删除不方便

可以为顺序文件配置一个运行记录文件(Log File)或称为事务文件(Transaction File), 把试图增加、 删除或修改的信息记录于其中, 规定每隔一定时间, 例如4小时,将运行记录文件与原来的主文件加以合并, 产生一个按关键字排序的新文件。

7.2.3 记录寻址

为了访问顺序文件中的一条记录,首先要找到记录的地址。

1. 隐式寻址方式

定长和变长不一样,定长更方便。变长需要逐条访问才知道实际地址

在这里插入图片描述

2. 显式寻址方式

1、通过文件中记录的位置(定长记录文件可用Ai=i*L实现随机访问,但变长记录文件不可以,须顺序查找每个记录从中获得相应记录的长度Li,才能计算di个记录的首址);
2、利用关键字

7.2.4 索引文件

1. 按关键字建立索引

在这里插入图片描述

2. 具有多个索引表的索引文件

实现随机查找,但不能批量查找,且要记录索引表,占用空间

7.2.5 索引顺序文件

1. 特征

  1. 引入文件索引表来实现对索引顺序文件的随机访问
  2. 增加溢出文件,用来记录新增加的、删除的和修改的记录

客服变长记录文件的缺点

2. 一级索引顺序文件

在这里插入图片描述

3. 两级索引顺序文件

将分类分组,为每一个组建立索引

7.2.6 直接文件和哈希文件

1. 直接文件(概念)

对于直接文件,则可根据给定的记录键值,直接获得指定记录的物理地址。换言之,记录键值本身就决定了记录的物理地址。这种由记录键值到记录物理地址的转换被称为键值转换(Key to address transformation)。组织直接文件的关键, 在于用什么方法进行从记录值到物理地址的转换。计算转换地址的方式为哈希函数时,该文件即为哈希文件。

2. 哈希文件

是直接文件的实现方法之一。目前应用最广泛的一种直接文件。用Hash函数将关键字转换为相应记录的地址。
在这里插入图片描述

7.3 目录管理

要求:

  1. 实现“按名存取”
  2. 提高对目录的检索速度
  3. 文件共享
  4. 允许文件重名

7.3.1 文件控制块和索引节点

文件控制块FCB用于描述和控制文件的数据结构。文件控制块的有序集合称为文件目录,即一个文件控制块就是一个文件目录项。

1. 文件控制块FCB

  1. 基本信息类
    1. 文件名
    2. 文件物理地址
    3. 逻辑结构
    4. 物理机构

在这里插入图片描述

  1. 存取控制信息
  2. 使用信息类

2. 索引节点

1)索引结点的引入

【文件名 | (指向该文件所对应的i结点的指针)索引节点编号】

2)磁盘索引结点

存放在磁盘上的索引结点。每个文件有唯一的磁盘索引结点。

文件主标识符、文件类型、文件存取权限、文件物理地址、文件长度、文件连接计数、文件存取时间

3)内存索引节点

存放在内存上的索引结点。当文件被打开时,将磁盘索引结点拷贝到内存索引结点中,方便以后使用。

增加以下信息:索引节点编号、状态、访问计数、文件所属文件系统的逻辑设备号、链接指针

7.3.2 简单的文件目录

1. 单级目录结构

【文件名 | 物理地址 | 文件说明 | 状态位】

在这里插入图片描述

逐个比较查找慢,难以共享;不允许文件重名

2. 两级目录

为每个用户再建立一个单独的用户文件目录UFD,这些文件目录结构相似,由用户所有文件的文件控制块组成。在系统中建立一个主文件目录MFD,每个用户目录文件都占一个目录项【用户名 | 指向子目录指针】。

在这里插入图片描述

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

7.3.3 树形目录结构

1. 树形目录

目前大部分系统都是树形结构

在这里插入图片描述

2. 路径名和当前目录

  1. 路径名

    从根目录到任何数据文件,都只有一条唯一的通路

  2. 当前目录

    相对路径名:从当前目录开始直到数据文件为止

    绝对路径名:从根目录开始

3. 目录操作

创建、删除、改变、移动、链接、查找

7.3.4 目录查询技术

1. 线性检索法

在这里插入图片描述

2. Hash方法

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

7.4 文件共享

系统允许多个用户(进程)共享一份文件。

1. 有向无循环图DAG

在这里插入图片描述

2. 利用索引结点

在这里插入图片描述

7.4.2 利用符号链接实现文件共享

在这里插入图片描述

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

7.5 文件保护

在这里插入图片描述

7.5.1 保护域

1. 访问权

(F1,{R/W})

2. 保护域

域是进程对一组对象访问权的集合,进程只能在指定域内执行操作,域规定了进程所能访问的对象和能执行的操作。

3. 进程和域间的静态联系

进程和域之间可一一对应,即一个进程只联系着一个域。在进程的整个生命周期中,其可用资源是固定的,称为静态域。

4. 进程和域间的动态联系方式

进程与域之间可以是一对多的关系。将进程的运行分成若干个阶段,每个阶段联系着一个域。

7.5.2 访问矩阵

1. 基本访问矩阵

利用一个矩阵描述系统的访问控制,即称为访问矩阵。
在这里插入图片描述

2. 具有域切换权的访问矩阵

在这里插入图片描述

如上图,允许D1⇒D2,D2⇒D3,但不允许D3⇒D1

7.5.3 访问矩阵的修改

1. 拷贝权

相应的权限在列进行扩散

在这里插入图片描述

2. 所有权

所有权O,所有者可以增加/删除权限

在这里插入图片描述

3. 控制权

可以删除控制域的权限

在这里插入图片描述

7.5.4 访问矩阵的实现

1. 访问控制表ACL

对访问矩阵按列(对象)划分,为每一列建立一张访问控制表ACL。把矩阵中属于该列的所有空项删除,此时的访问控制表是由一有序对(域,权集)所组成的。

2. 访问权限控制表

把访问矩阵按行(域)划分,由每一行构成一张访问权限表。由一个域对对象可以执行的一组操作所构成的表。以下图对应图7-19中域D2的访问权限表。
在这里插入图片描述

;