一个NotionNext搭建的博客
数据库系统概论
大数据原理与应用
javaWeb应用开发基础教程
python
毕业设计
大数据技术综合应用
实训-航空数据系统
java面向对象程序设计
数据结构
算法分析与设计
SPARK
Python爬虫大数据采集与挖掘
云计算
概率论与数理统计
数字逻辑
计算机网络
计算机组成原理
linux
操作系统
人工智能导论
数据仓库与数据挖掘
数据可视化
大数据安全与隐私保护
c语言
C++
[第九章]磁盘存储管理
文件系统
文件和对文件的操作
概述
- 按名存取
数据项
文件类型—逻辑结构分类
- 无结构(流式):文件由字节组成,流文件
- 有结构(记录式):由记录组成
- 定长
- 不定长:每个记录前面会记下起始位置
文件类型
文件用途
- 系统文件:操作系统
- 库文件:标准函数
- 用户文件:用户信息组成
存取控制属性
- 读、写、可执行
数据形式
- 源文件
- 目标文件
- 可执行文件
组织形式和处理方式
- 普通文件
- 目录文件:空间其实是描述,索引节点
- 名字:文件名
- 内容:子项的属性信息
- 特殊文件: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...