文章目录

  • 文件和文件系统
    • 文件名和类型
    • 文件系统的层次结构
    • 文件操作
  • 文件的逻辑结构
    • 按文件是否有结构分类
    • 按文件的组织方式分类
  • 文件目录
    • 目录管理的要求
    • 文件控制块FCB
    • 索引结点
    • 单级文件目录
    • 两级文件目录
    • 树形结构目录
    • 路径名和当前目录
  • 文件共享
  • 文件保护
  • 磁盘存储器管理
    • 外存的组织方式
  • 文件存储空间管理
    • 空闲区表法:系统为外存上所有空闲区建立一张空闲表,属于连续分配方式
    • 空闲链表法:将空闲盘区拉成一条空闲链
    • 位示图法:利用二进制的一位来表示磁盘中一个盘块的使用情况,值为0 空闲,值为1 已分配

文件和文件系统

文件系统的管理功能是将其管理的程序和数据通过组织为一系列文件的方式实现的。而文件则是指具有文件名的若干相关元素的集合。

元素通常是记录,而记录又是一组有意义的数据项的结合

可见,基于文件系统的概念,可以把数据组分为:数据项,记录和文件三级

文件名和类型

  • 文件名和扩展名

  • 文件类型

    • 按性质和用途分:系统文件,用户文件,库文件
    • 按文件中数据的形式分:源文件,目标文件(.obj),可执行文件(.exe/.com)
    • 按保护方式分:只读文件,读写文件,只执行文件
    • 按组织形式和处理方式分:普通文件,目录文件,特殊文件

文件系统的层次结构

  • 最底层是对象及其属性说明(包括文件,目录和磁盘存储空间)
  • 中间层是对对象操作和管理的软件集合(我们所关注的)
  • 最高层是文件系统接口(命令接口和程序接口)

文件操作

  • 最基本的文件操作:创建文件,删除文件,读文件,写文件,设置文件的读/写位置
  • 文件的“打开"和“关闭”操作
  • 其他文件操作:关于文件属性的操作,关于目录的操作,还有实现文件共享的系统调用。

文件的逻辑结构

按文件是否有结构分类

  • 有结构文件

    • 定长记录:指文件中所有记录的长度都是相同的
    • 变长记录
  • 无结构文件:在系统中运行的大量的源程序,可执行文件,库函数等就是无结构的文件形式,即流式文件

按文件的组织方式分类

  • 顺序文件

    • 排列方式

      • 串结构:按存入文件的先后时间进行排序
      • 顺序结构:由用户指定一个关键字,文件中的所有记录按照关键字排序
    • 优点:对文件中的记录进行批量存取时,效率最高。对于顺序存储设备(磁带)也只有顺序文件才能被存取,检索时可利用有效的查找算法

    • 缺点:增删改查比较慢

    • 记录寻址

      • 隐式寻址方式:顺序访问,下一块的地址,存放在块里
      • 显示寻址方式:直接/随机访问,单独建表,可以快速找到对应的盘块号
  • 索引文件

    • 建立一个索引表:用来存放记录在逻辑地址空间中的起始地址和记录的长度。
    • 有效克服了变长记录文件不便于直接存取的缺点
    • 便于增删改查
  • 索引顺序文件

文件目录

目录管理的要求

  • 实现“按名存取”:用户只须向系统提供所须访问文件的名字,便能快速找到指定文件的存储位置
  • 提高对目录文件的检索速度
  • 文件共享
  • 允许文件重名

文件控制块FCB

  • 基本信息:文件名,文件物理位置,文件逻辑结构,文件的物理结构
  • 存取控制信息类:文件的存取权限,核准用户的存取权限以及一般用户的存取权限
  • 使用信息类:文件的建立日期,时间,文件上一次修改的日期和时间

索引结点

  • 磁盘索引结点:文件主标识符,文件类型,文件存取权限,文件物理地址,文件长度,文件连接计数,文件存取时间
  • 内存索引结点:索引结点编号,状态,访问计数,文件所述文件系统的逻辑设备号,链接指针

单级文件目录

  • 在整个文件系统中只建立一张目录表,每个文件占一个目录项,目录项中含文件名,文件扩展名,文件长度,文件类型,文件物理地址等,表明目录项是否空闲的状态位

两级文件目录

  • 套娃,再建立一个单独的用户文件目录UFD,每个目录文件都占有一个目录项,其中目录项包括用户名和指向该用户目录文件的指针

树形结构目录

路径名和当前目录

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

文件共享

有向无循环图:在严格的树形结构目录中,每个文件只允许有一个父目录,父目录可以有效的拥有该文件,也就是说,树形结构目录不适合文件共享

利用索引结点:即文件的物理地址及其他的文件属性等信息,不再是放在目录项中,而是放在索引结点中,由索引结点指向文件的物理地址。在文件目录中只设置文件名及指向相应索引结点的指针

文件保护

人为因素:人们有意无意的行为会使文件系统中的数据遭到破坏会丢失

  • 通过存取控制机制

系统因素:系统的某部分出现异常情况会造成数据的破坏或丢失,特别是磁盘

  • 采取系统容错技术

自然因素:随着时间的推移,存放在磁盘上的数据会逐渐消失

  • 建立后备系统

磁盘存储器管理

外存的组织方式

  • 连续组织方式:文件物理结构是顺序式文件结构

    • 顺序访问容易–仅需要起始块号和长度
    • 顺序访问速度最快
    • 支持随机访问
    • 要求分配连续的存储空间,会产生许多外碎片
    • 必须事先知道文件的长度
    • 不能灵活的删除和插入记录
    • 文件不能动态增长
  • 链接组织方式:文件物理结构是链接式文件结构

    • 消除了磁盘的外碎片,提高了外存的利用率
    • 对插入和删除和修改记录非常容易
    • 文件可动态增长
    • 隐式链接:指针存放在每个盘块中,只适合于顺序访问
    • 显式链接:指针显式地存放在内存的文件分配表FAT中
  • 索引组织方式:文件物理结构是索引式文件结构

    • 不能支持高效的直接存取
    • FAT表需占用较大的内存空间
    • 索引方式:把所有的磁盘块号放在一个索引块(表)中
    • 优点:支持随机访问,动态存取没有外碎片,但索引块的负担较重
    • 对小文件的利用率低
  • 增量式(混合)索引方式

文件存储空间管理

文件存储空间的基本分配单位是盘块

空闲区表法:系统为外存上所有空闲区建立一张空闲表,属于连续分配方式

  • 存储空间的分配和回收

    • 分配采用首次适应算法和最佳适应算法

      • 首次适应算法 :顺序地检索空闲表的各表项,直至找到第一个大小能满足要求的空闲区,将该空闲区分配给用户
      • 最佳适应算法:找到一堆大小合适的空闲区,将最贴合的空闲区分配给用户
    • 回收:类似于内存回收的方法

      • 要考虑回收区是否与空闲盘块表中插入点的前后相连,对相邻接者予以合并

空闲链表法:将空闲盘区拉成一条空闲链

  • 空闲盘块链:以盘块为单位,其中每个盘块都有指向后继盘块的指针

    • 当用户因创建文件而请求存储空间时,系统便从链首开始,依次摘下适当数目的空闲盘块分配给用户
    • 当用户因删除文件而释放存储空间时,系统便将回收的盘块依次挂在空间盘块链的末尾
    • 分配和回收效率低,盘块链会很长
  • 空闲盘区链:将所有的空闲盘区(可包含多个盘块)连成一条链。每个盘区上除了含有用于指示下一个空闲盘区的指针外,还有指明本盘区大小的信息

    • 通常采用首次适应算法进行分配:为了提高检索速度,可以采用显式链接组织方式,即在内存中为空闲盘区建立一张链表
    • 回收盘区,也要将与相邻盘区合并
    • 分配与回收的过程比较复杂,但是分配与回收的效率较高

位示图法:利用二进制的一位来表示磁盘中一个盘块的使用情况,值为0 空闲,值为1 已分配

  • 二进制起始可能从 0 也可能从 1 , 都是一个意思。

  • mxn等于磁盘的总块数=>map[i , j]

  • 盘块的分配

    • 顺序扫描位示图,从中找出一个或一组值为0的二进制位
    • 将所找到的一个或一组二进制位,转换成与之相应的盘块号:假定找到的是第i行,第j列,则其相应的盘块号为:b = n(i-1)+j
    • 修改位示图,令 map[i , j ] = 1
  • 盘块的回收

    • 将回收盘块的盘块号b 转换成位示图的行号和列号

      • i = (b - 1 ) div n + 1
      • j = (b - 1) mod n + 1
    • 修改位示图,令map[ i, j ] = 0

操作系统——文件存储管理相关推荐

  1. 操作系统之存储管理——FIFO算法和LRU算法

    操作系统之进程调度--优先权法和轮转法(附上样例讲解) 操作系统之银行家算法-详解流程及案例数据 操作系统之多线程编程-读者优先/写者优先详解 操作系统之存储管理--FIFO算法和LRU算法 操作系统 ...

  2. 实验五 操作系统之存储管理

    实验五 操作系统之存储管理 一.实验目的 连续内存分配方式会形成许多"碎片",虽然可以通过"紧凑"方法将许多碎片拼接成可用的大块空间,但须为之付出很大开销.如果 ...

  3. 操作系统(存储管理)

    操作系统(存储管理) 文章目录 操作系统(存储管理) 一,多层结构的存储器系统 1.1主存 1.2磁盘缓存 二,程序的装入和链接 2.1程序的装入方式 2.1.1绝对装入方式 2.1.2可重定位装入方 ...

  4. 操作系统之存储管理-翟一鸣-专题视频课程

    操作系统之存储管理-202人已学习 课程介绍         "取指令,执行指令",这是冯诺依曼式计算机的基本原则,进程管理研究的是CPU如何执行指令的问题,而指令得以执行的前提是 ...

  5. 视频教程-操作系统之存储管理-操作系统

    操作系统之存储管理 1979年出生于甘肃省兰州市,2001年7月本科毕业于西北师范大学计算机科学与技术专业,同年于烟台大学计算机学院任教至今:期间于2006年获得上海交通大学软件工程硕士学位,现为学院 ...

  6. Linux操作系统-文件(2)

    Linux操作系统-文件(2)(2015-8-17) 分类:Linux操作系统 二:底层文件访问 文件描述符   文件描述符是一个非负整数.对内核而言,所有打开的文件都由文件描述符引用.   当打开一 ...

  7. 计算机操作系统存储管理实验报告,《操作系统》存储管理实验报告

    <操作系统>存储管理实验报告 ____大学____学院实验报告课程名称: 计算机操作系统 实验名称: 存储管理实验 实验日期: 班级: 姓名: 学号: 仪器编号: XX 实验报告要求:1. ...

  8. 操作系统实验—存储管理

    操作系统实验-存储管理 所有实验源码: gitee:https://gitee.com/infiniteStars/os-project github:https://github.com/hello ...

  9. 计算机操作系统之存储管理

    以下是本人大学学计算机操作系统的笔记.有版权的,转载请注明出处. 存储管理:就是对内存的管理. 内存管理提高存储器的利用率以及从逻辑上扩充存储器. 存储管理功能: 内存的回收与分配,地址变换(程序中的 ...

最新文章

  1. 高级转录组分析和R数据可视化第11期(课程推迟,可先报名,时间另行告知)
  2. 【BZOJ3262】 陌上花开
  3. scala中object和class关键字的区别
  4. QML基础类型之variant
  5. hbase数据导入到mysql(转载+自己验证整理,目前失败)
  6. DP——背包问题(一)
  7. 前端学习(2942):vue的本地注册
  8. mysql 还原数据库 unknown command 'b'_mysql数据库还原出错ERROR:Unknown command ‘\\’解决手记...
  9. How-to: Build VPP FD.IO development environment with Mellanox DPDK PMD.
  10. 04-3. 统计素数并求和(20)
  11. Flink 1.11 SQL 使用攻略
  12. powerbuilder mysql_powerbuilder+mysql5.0的连接过程 | 学步园
  13. Cisco NX-OS 基础配置指南(持续更新)
  14. 计算机主机放电,电脑需要放电才能开机_电脑主板放电才能开机
  15. 【算法】小团的车辆调度(美团2021校招题)
  16. 利用httpclient和多线程刷访问量代码
  17. NVIDIA Jetson之GPIO引脚设置
  18. 【苹果相册推】您只需使用证书并发布证书描述文件(无需发布)上传PEM范例文件
  19. python 词库 匹配_python从一段文本中找出存在于词库的词语
  20. html js 修改img 图片不拉伸,Javascript防止图片拉伸的自适应处理方法

热门文章

  1. MPI MPI_Bcast (广播)用法详解
  2. vmware虚拟机网络配置详解
  3. centos 更新时间
  4. 华为手机鸿蒙更新时间,华为手机版鸿蒙系统更新时间介绍
  5. 解析错误:解析软件包时出现问题
  6. Cadence 简易使用教程
  7. IDEA 类中找不到main方法请将main方法定义为public static void main. 否则 JavaFX 应用程序类必须扩展javafx.application.Applicati
  8. VSC 最新版本 加入实用功能Pinned
  9. ansible 远程启动程序ansible结束后程序也被关闭
  10. 并行计算求pi值C语言,使用并行计算求圆周率π.pdf