7 文件管理

7.1 文件和文件系统

文件系统的引入

文件系统:OS存储和管理文件信息,方便用户对文件的存取、共享和保护等,有效提高系统资源的利用率。

程序和数据以文件的形式保留在外存中。

软件资源

软件资源:各种系统程序,以及标准子程序库和应用程序,数据。

软件资源都是一组相关联的信息(程序和数据)的集合。

引入文件系统的原因

方便用户,保证文件的安全性,提高资源利用率。

文件系统的功能

  • 实现按名存取
  • 文件的物理结构
  • 文件信息的检索
  • 文件的共享和保护

数据项、记录和文件

数据项

基本数据项:描述一个对象的某种属性的字符集,是数据组织中可以命名的最小逻辑数据单位,即原子数据,又称为数据元素或字段。

基本数据项=数据名+数据类型。

数据项的名字和类型两者共同定义了一个数据项的“型”。而表征一个实体在数据项上的数据则称为“值”。

组合数据项:由若干个基本数据项组成的,简称组项。例如,经理便是个组项,它由正经理和副经理两个基本项组成。

记录

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

在记录的各个数据项中,能惟一地标识一个记录的一个或几个数据项,称为关键字(key)。

文件

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

文件属性:文件类型、文件长度、文件的物理位置、文件的建立时间等。

文件、 记录和数据项之间的层次关系

1608653024637

文件名

包含文件名和扩展名。

文件的类型

按用途分类

①系统文件:系统软件

②用户文件:用户的文件

③库文件:标准子例程及常用的例程

按文件中数据的形式分类

①源文件:源程序和数据

②目标文件:源程序经过编译,尚未链接的目标代码“.obj”

③可执行文件:目标代码经过链接后的文件“.exe”

按存取控制属性分类

①只执行文件

②只读文件

③读写文件

按组织形式和处理方式分类

①普通文件:由ASCII码或二进制码组成的字符文件

②目录文件:由文件目录组成的文件(检索执行下属文件)

③特殊文件:系统中的各类I/O设备

文件系统概念

OS中负责管理和存取文件信息的软件机构。负责文件的建立,撤消,存入,读写,修改和复制,还负责完成对文件的按名存取和进行存取控制。

文件系统的层次结构

文件系统接口>对对象进行操纵和管理的软件集合>对象及其属性

1608653161979

对象及其属性 ★★

文件、目录、磁盘存储空间

对对象进行操纵和管理的软件集合

是层次组织结构的核心部分。

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

文件系统接口

命令接口、程序接口

文件操作

①最基本的文件操作

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

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

用户和文件的连接建立和断开。

③其他文件操作

允许用户直接设置和获得文件的属性

查询文件状态

设置和修改用户对文件的存取权限

建立,改变和删除目录

文件共享和设置访问路径

7.2 文件的逻辑结构

文件的逻辑结构(文件的组织):从用户角度看到的文件的全貌,也就是它的记录结构。

文件的物理结构(文件的存储结构):文件在外存上的存储组织形式。

文件逻辑结构的类型

按文件是否有结构分类

有结构文件:定长记录,变长记录

无结构文件:流式文件

按文件的组织方式分类

顺序文件

一系列记录按顺序进行存取操作,文件信息队列排列。其中记录可以是定长和变长记录。

  • 串结构, 各记录之间的顺序与关键字无关。 通常的办法是由时间来决定,即按存入时间的先后排列。
  • 顺序结构,指文件中的所有记录按关键字(词)排列。

1608654364472

优点:

  • 最佳应用场合,是在对诸记录进行批量存取时, 即每次要读或写一大批记录。
  • 只有顺序文件才能存储在磁带上, 并能有效地工作。

缺点:

  • 查找或修改单个记录,为此系统便要去逐个地查找诸记录。
  • 增加或删除一个记录, 都比较困难。
索引文件

建立对应关系的索引表,与主文件构成索引文件。

1608654460140

索引顺序文件

为每一个文件建立一张索引表,为一组记录中的第一个记录建立一个索引表项。

1608654487969

哈希(Hash)文件

1608654540911

7.3 文件目录

文件目录:数据结构,用于标识系统中的文件及其物理地址,供检索时使用。

对目录管理的要求如下:

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

文件控制块和索引结点 ★

文件控制块FCB:用于描述和控制文件的数据结构。包括:基本信息(文件名、文件物理位置、文件逻辑结构、文件物理结构)、存取控制信息、使用信息。

1608654619200

文件目录:文件控制块的有序集合。文件目录是一个文件(目录文件)。

索引结点:每一个索引结点保存文件系统中的一个文件系统对象的元信息数据,但不包括数据内容或者文件名。

1608654667718

磁盘索引结点:每个文件有唯一的磁盘索引结点。

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

内存索引结点

  • 索引结点编号
  • 状态
  • 访问计数
  • 文件所在设备的逻辑设备号
  • 链接指针:空闲链表、散列队列指针

简单的文件目录

单级文件目录

在整个文件系统中只建立一张目录表,每个文件占一个目录项。

目录项:文件名、文件扩展名、文件长度、文件类型、文件物理地址、文件说明、状态位。

目录结构:

1608654803872

单级目录的优点是简单且能实现目录管理的基本功能——按名存取,但却存在下述一些缺点:

  • 查找速度慢
  • 不允许重名
  • 不便于实现文件共享

两级文件目录

主文件目录(一级,用户名、指向子目录指针),用户文件目录(二级,文件控制块)。

目录结构:

1608654936758

具有以下优点:

  • 提高了检索目录的速度。
  • 在不同的用户目录中, 可以使用相同的文件名。
  • 不同用户还可使用不同的文件名来访问系统中的同一个共享文件。

树形结构目录

树形目录

树形目录:树形结构目录,主目录被称为‘根目录’(唯一),每个文件和每个目录只能有一个父目录,子目录被称为‘树节点’,数据文件被称为‘树叶’。

目录结构:

1608655014521

路径名和当前目录

路径名:从树的根(即主目录)开始, 把全部目录文件名与数据文件名,依次地用“/”连接起来, 即构成该数据文件的路径名(path name)。

当前目录(工作目录):当前访问工作的目录。

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

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

目录查询技术 ★

过程

根据文件名找到其FCB或索引结点;

查找FCB或索引结点中的文件物理地址(盘块号),换算为物理位置;

启动磁盘驱动程序,将文件读入内存。

检索方法
① 线性检索法(顺序检索法) ★★★

1608655106735

② Hash 方法

7.4 文件共享 ★

基于有向无循环图实现文件共享(索引结点)

有向无循环图:允许每个文件都可以有多个父目录。

索引结点:文件的物理地址及其他的文件属性等信息放在索引节点中,文件目录中只设置文件名及指向相应索引结点的指针。

1608655183617

1608655200513

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

符号链接:一个文件或子目录有一个主父目录和与之链接的链接父目录。创建一个新的文件。

在利用符号链方式实现文件共享时, 只是文件主才拥有指向其索引结点的指针;而共享该文件的其他用户,则只有该文件的路径名,并不拥有指向其索引结点的指针。

1608655238869