900 likes | 1.04k Views
第六章 文件管理. 6.1 文件和文件系统. 文件系统管理是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。文件指具有文件名的若干相关元素的集合。元素 通常 是记录,记录是一组有意义的数据项的集合。. 6.1.1 文件、记录和数据项. 1 数据项 基本数据项 描述一个对象的某种属性的字符集,原子数据,数据元素或字段。例如学生的基本数据:学号、姓名、年龄、班级 基本数据项有“型”与“值” 组合数据项 由若干基本数据项组成,简称组项。如工资可由基本工资、工龄工资和奖励工资组成. 2 记录 记录是一组相关数据项的集合。如某学生记录,包括某学生的所有数据项。
E N D
6.1 文件和文件系统 • 文件系统管理是通过把它所管理的程序和数据组织成一系列文件的方法来实现的。文件指具有文件名的若干相关元素的集合。元素通常是记录,记录是一组有意义的数据项的集合。
6.1.1 文件、记录和数据项 • 1 数据项 • 基本数据项 • 描述一个对象的某种属性的字符集,原子数据,数据元素或字段。例如学生的基本数据:学号、姓名、年龄、班级 • 基本数据项有“型”与“值” • 组合数据项 • 由若干基本数据项组成,简称组项。如工资可由基本工资、工龄工资和奖励工资组成
2 记录 • 记录是一组相关数据项的集合。如某学生记录,包括某学生的所有数据项。 • 可以唯一标识记录的一个或几个数据项称为关键字(key)。通常关键字由一个数据项构成,多个数据项构成的关键字是复合关键字。
3 文件 • 具有文件名的一组相关元素的集合,有两类 • 有结构文件:由若干相关记录组成 • 无结构文件:一个字符流 • 文件具有文件名,按名存取文件 • 文件属性 • 文件类型 • 文件长度 • 文件物理位置 • 文件建立时间
6.1.2 文件类型和文件系统模型 • 1 文件类型 • 1)按用途分类 • 系统文件 • 用户文件 • 库文件 • 2)按文件中数据形式分类 • 源文件 • 目标文件 • 可执行文件
2 文件系统文件 • 文件系统分为三个层次:最低层对象及其属性;中间层对对象进行操纵和管理的软件集合;最高层是文件系统提供给用户的接口。 • 1)对象及其属性 • 文件、目录、存储空间 • 2)对对象操纵和管理的软件集合 • 文件系统核心 • 3)文件系统的接口 • 命令接口 • 程序接口
6.1.3 文件操作 • 相关的概念 • 目录项 • 用于检索文件的一种数据结构(FCB) • 读写指针 编号:0 1 …… i …… n-1 信息项 信息项 ……... 信息项 ……... 信息项 读写指针
6.1.3 文件操作 • 1 最基本的文件操作 • (1)创建文件 • (2)删除文件 • (3)读文件 • (4)写文件 • (5)截断文件 • (6)设置文件读/写位置 • 2 文件的打开和关闭操作 • “打开文件表” • 3 其他文件操作
6.2 文件的逻辑结构 • 对于任何一个文件,存在两种形式的结构 • 逻辑结构: • 用户对文件的观点和使用常以其编制的组织方式来对待。 • 物理结构: • 文件的存储结构,外存上的存储组织形式 • 对逻辑结构的要求 • 1 提高检索速度 • 2 便于修改 • 3 降低存储费用
6.2.1 文件逻辑结构的类型 • 文件的逻辑结构是用户可见结构,可分为: • 记录式的有结构文件 • 定长记录 • 变长记录 • 组织形式包括 • 顺序文件 • 索引文件 • 索引顺序文件 • 字符流式的无结构文件 • 相关的有序字符的集合。文件的长度即为所含字符数,流式文件不分成记录,而是直接由一连串信息组成。
l1 记录1 l2 记录2 记录1 记录2 l1 l2 l l 指示记录长度 (a) 变长 (b) 定长
6.2.2 顺序文件 • 1、逻辑记录的排序 • (1)串结构:记录按存入时间排列 • (2)顺序结构:按关键字排列(可利用折半查找等) • 2 、对顺序文件的读/写操作 • 分别设置读指针和写指针
6.2.2 顺序文件 • 3 、顺序文件的优缺点 • 适用于对记录的批量存取; • 对单个记录的查找不方便; • 增加一个记录也比较困难。
6.2.3 索引文件 对于定长记录文件,如果要查找第i个记录,可直接根据下式计算来获得第i个记录相对于第一个记录首址的地址: Ai=i×L 对于可变长度记录的文件,要查找其第i个记录时,须首先计算出该记录的首地址。为此,须顺序地查找每个记录,从中获得相应记录的长度Li,然后才能按下式计算出第i个记录的首址。假定在每个记录前用一个字节指明该记录的长度,则
6.2.3 索引文件 • 对于定长记录文件,查找记录和直接存取比较方便,但对于变长记录文件比较困难和低效,所以为变长记录文件建立一张索引表 索引文件的组织
6.2.4 索引顺序文件 • 将顺序文件中的所有记录分为若干组,为顺序文件建立一张索引表。在索引表中为每组中的第一个记录,建立一个索引项,其中含有记录的键值和指向该记录的指针。
6.2.5 直接文件和哈希文件 • 1 直接文件 • 根据记录的键值直接得到记录物理地址(键值转换) • 2 哈希文件 • 应用广泛的一种直接文件,利用hash函数,将记录键值转换为相应记录的地址
6.3 外存分配方式 • 考虑的主要问题是:怎样才能有效的利用外存空间和如何提高对文件的访问速度。常用的分配方式有: • 连续分配 • 链接分配 • 索引分配
6.3.1 连续分配 • 为每个文件分配一组相邻接的盘块。一组盘块的地址定义了磁盘上的一段线性地址。 • 对于这种方式,文件的逻辑组织与物理组织一致。为使系统能找到文件存放的地址,应在目录项的“文件物理地址”字段存放该文件的第一个记录所在的盘块号和文件长度(盘块数)如图:
6.3.1 连续分配 • 有碎片问题 • 优缺点: • 顺序访问容易 • 顺序访问速度快 • 碎片 • 必须知道文件长度
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 隐式链接
在文件目录的每个目录项中须含有指向链接文件第一个盘块和最后一个盘块的指针。每个盘块含有指向下一个盘块的指针在文件目录的每个目录项中须含有指向链接文件第一个盘块和最后一个盘块的指针。每个盘块含有指向下一个盘块的指针 • 问题:只适合顺序访问,因为在盘块中含下一个盘块的指针,所以必须启动磁盘。如果随机读取第100块,则要启动磁盘100次。速度很低。改进的方法是“簇”,但改进有限,且增大碎片
2 显式链接 显式链接结构
把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从0开始到N-1.每个表项存放链接指针。文件的首个盘块号存放在相应文件的FCB中。把用于链接文件各物理块的指针,显式地存放在内存的一张链接表中,在整个磁盘仅设置一张。表的序号是物理盘块号,从0开始到N-1.每个表项存放链接指针。文件的首个盘块号存放在相应文件的FCB中。 • 由于在内存中检索,所以显著提高检索速度。-FAT • 问题:可能占用较大内存 • 计算:1.2M软盘,块1K,FAT有多大? • 200M硬盘,块1K,FAT有多大?
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 文件控制块和索引结点 • 文件控制块(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 目录结构 • 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 目录查询技术 • 文件访问过程:利用文件名查询文件目录,根据FCB或i结点所记录的文件物理地址(盘块号),得到文件在磁盘上的物理地址,将文件读入内存。 • 查询方式 • 线性检索 • HASH
1. 线性检索法 查找/usr/ast/mbox的步骤