[第九章]磁盘存储管理

文件系统

文件和对文件的操作

概述

  • 按名存取

数据项

文件类型—逻辑结构分类
  • 无结构(流式):文件由字节组成,流文件
  • 有结构(记录式):由记录组成
    • 定长
    • 不定长:每个记录前面会记下起始位置

文件类型

文件用途
  • 系统文件:操作系统
  • 库文件:标准函数
  • 用户文件:用户信息组成
存取控制属性
  • 读、写、可执行
数据形式
  • 源文件
  • 目标文件
  • 可执行文件
组织形式和处理方式
  • 普通文件
  • 目录文件:空间其实是描述,索引节点
    • 名字:文件名
    • 内容:子项的属性信息
  • 特殊文件:I/O设备、FIFO管道文件等

文件属性

  • 名称:用户可识别
  • 内部标识:唯一的
  • 物理位置:物理盘块起始位置
  • 拥有者
  • 全限
  • 类型
  • 长度
  • 时间

文件操作

  • 创建
  • 删除
  • 截断(清零)
  • 设置文件的读写位置(偏移)

逻辑结构

文件的内容

四种模式

  • 顺序文件
  • 索引文件
  • 索引顺序文件:分组,每组一个记录索引
  • 直接文件:hash函数,键值转换到物理地址
顺序存取
随机存取(直接存取)

物理结构

内容分成多个盘块放到磁盘
  • 目录指向磁盘起始块
  • 连续结构
    • 磁盘上连续存储
    • 存取快
    • 缺点
      • 插入、删除困难
      • 因为要顺序存储,所以有外部碎片
      • 不译动态增长
      • 实现知道文件长度
  • 隐式链接结构
    • 有一个指向下一个存储位置的指针
    • 缺点:找后面的块需要访问前面的n多块
  • 显式链接结构
    • 含有一个文件分配表(FAT表)
      • 以簇为单位
      • 里面存放的是下一个存储位置
      • 下标是当前文件夹位置
      • 结构
        • 引导区 FAT1 FAT2 根目录 其他目录和文件
  • 索引结构
    • 文件目录存放文件名及其对应的索引块
    • 索引块存放各个盘块的先后存储位置
    • 分类
      • 一级索引
      • 多级索引
        • 文件对应的索引块中,块中放的也有索引块的地址
        • 有内部碎片
      • 混合索引
        • 模式 拥有者 时间戳 大小 块数量 直接块 一级间接块 二级间接块 三级间接块
        • 一个盘块为1k,每个盘块占4字节,则一个索引块可以存放文件的盘块号为256个
        • 一次间接址
        • 两次间接址
        • 三次间接址

空闲磁盘管理

空闲表和空闲链表法

  • 最小单位空闲盘块
  • 多个盘块形成空闲盘区
  • 空闲表法
    • 用表记录空闲盘块或空闲盘区的位置
    • 盘区还要记录块数
  • 空闲链表法
    • 用链表记录空闲盘块或空闲盘区的位置
    • 含有空闲盘块、区指针

位示图

用二进制的一位表示一个盘块的使用情况,n个盘块用n位
  • 空闲为0,分配块用1
  • 使用矩阵来存放众多位
  • 查找空盘块从第一行第一列开始查找
  • 盘块号从0开始
  • 分配与回收:根据矩阵位置找盘块号,反之为回收

成组链接法⭐

结构

  • 空闲盘块栈:存放第一组的长度并存放第一组的每一个盘块号
  • 每组的盘块总数N和该组的全部盘块号都记入前一组的第一个盘块中
    • 一组数量是一个固定的、不超过设定的值
    • 每一组的盘块都一样
    • 就像一个树,把所有盘块包含进去
    • 一组编号不必连续

分配

  • 当第一组还有多于一个时,栈顶取,分配第一组的每一个
  • 出栈到第一组只有一个时,每一组前移,原来第一组的剩下一项复制到空闲盘块栈

回收

  • 第一组不满,放第一组。栈数量加1,并存放盘块号
  • 如果满预定值,每一组后移,空闲盘块栈成为第一组的第一项,新来的为空闲盘块栈

目录管理

  • 文件控制块(FCB):数据结构,存放管理文件所有属性信息
    • 目录是由每个目录项的FCB构成
    • 文件名、文件号、用户名、文件地址、长度、类型、属性、共享计数、链接计数、建立日期、保存期限、最后修改日期、最后访问时间、口令、文件逻辑结构、文件物理结构
  • 文件目录
  • 目录项
  • 目录文件

目录结构

  • 一级目录结构
    • 文件存放一个目录中
  • 二级目录结构
    • 多用户,每个用户一个一级目录
  • 多级目录结构(树形目录)
    • 可共享,为硬链接
    • 工作目录(当前目录)

文件目录改进

  • 符号目录项
    • 次部
    • 文件名 、文件号
    • 对文件查找只查符号目录项就可以查到
  • 基本目录项(索引节点)
    • 主部
    • 除文件名的部分(包括文件号)
    • 对文件操作需要通过符号目录项的文件号找到基本目录项
  • 如果访问文件,与之前相比,需要再加一次访问(根据符号目录号的文件号查基本目录项)
  • UNIX、LINUX采用此方法

目录查询技术

Hash方法

文件名带入函数得到文件内容
  • 不能使用通配符

线性检索法

符号目录项→索引节点→物理位置→内容(符号目录项或文件内容)

文件共享

  • 软链接
    • 建立一个文件,文件内容是目标文件的路径
  • 硬链接
    • 两个符号目录项指向同一个索引节点

磁盘容错技术

三层

  • 替代磁盘
  • 替代机器
  • 替代集群

热修复重定向

  • 磁盘中一个区域,当访问的一个区域故障,临时代替
 

不一致性检查

第一张放被使用的表
第二张空闲的表
  • 正常,为10或01
异常
  • 0 0
    • 0 1
  • 0 2
    • 0 1
  • 2 0
    • 人工检查文件内容属于哪个文件
Prev
[第八章]文件管理
Next
实验
Loading...
Article List
一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++