为实现存储空间分配,系统需要:
记住空闲存储空间使用情况;为空间设置相应的数据结构;
提供对存储空间分配、回收的操作手段。

典型的管理方法:
1)空闲表和空闲链表法
空闲表法:常用于连续分配管理方式
数据结构:系统为外存上的所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项(表项包括序号、空闲区的第一个盘块号、空闲盘块数等。)将所有空闲区按其起始盘块号递增的次序排列。

存储空间的分配与回收操作:
与内存的动态分配类似,同样可采用首次适应算法、循环首次适应算法等。
回收主要解决对数据结构的数据修改。
应该说明,虽然很少采用连续分配方式,然而在外存的管理中,由于它具有较高的分配速度,可减少访问磁盘的I/O频率,故它在诸多分配方式中仍占有一席之地。(如实现虚拟用的部分外存就是连续分配方式)
空闲链表法:将所有空闲盘区拉成一条空闲链。
数据结构:链 根据构成链所用基本元素的不同,可把链表分成两种形式:
空闲盘块链;空闲盘区链

空闲盘块链:分配回收简单。链表长,大量分配时需要操作的指针多
空闲盘区链:链表长度不定,分配时操作的指针数量相对较少,但分配回收操作相对复杂。

2)位示图法
利用二进制的一位来表示一个盘块的使用情况。
值为0表示对应的盘块空闲,为1表示已分配。有的系统则相反。
磁盘上的所有盘块都有一个二进制位与之对应,这样由所有盘块所对应的位构成一个集合,称为位示图。
总块数=mn。可用mn个位数来构成位示图,可看成是二维数组(数据结构)。

盘块的分配与回收
根据位示图进行盘块分配:
1.顺序扫描位示图。找到为0的二进制位。
2.将所找到的一个或一组二进制位,转换成与之对应的盘块号。进行分配操作。盘块号计算公式为:盘块号 = 列总数*(i-1)+ j;(注意下标i,j从1开始)
3.修改位示图。
根据位示图进行盘块回收:
1.将回收盘块的盘块号转换成位示图中的行号和列号。转换公式为:i=(盘块号-1)div列数+1;j=(盘块号-1)mod列数+1。Div 求商,mod 取余,公式中的i、j都是从1开始的(如12号盘块转换后为1,12)
2.修改位示图。

优点:从位示图中很容易找到一个或一组相邻接的空闲盘块。
缺点:限于容量问题,常用于微型机和小型机中。

3)成组链接法
大型文件系统,空闲表或空闲链表太长不方便管理操作。,UNIX系统中采用成组链接法,这是将两种方法结合而形成的一种空闲盘块管理方法。
中心思想:
所有盘块按规定大小划分为组;
组间建立链接;
组内的盘块借助一个系统栈可快速处理,且支持离散分配回收。

所有空闲盘块,被分成若干个组,设有10000个盘块,每100个分为1组,则分成100个组。201-7999为文件区,各组链接起来。

例题:
例:某系统采用成组链接法管理磁盘空闲空间,目前状态如上图,问:
还有多少空闲盘块?
答:若从当前状态下,系统分配3个盘块给某文件后,又删除另一文件,回收了第700,711,703,788,701这5个盘块。则磁盘空间的状态图中的链接情况又如何?

1.空闲盘块的组织
空闲盘块号栈。
用来存放当前可用的一组空闲盘块的盘块号(最多含100个号)
栈中尚有的空闲盘块号数N。(N兼具栈顶指针用。栈底为S.free(0),栈满时栈顶到达S.free(99),N=100,表示有100个盘块供使用。

链接
每一组的第一个盘块记录下一组的盘块号,形成了一条链。
总将链的第一组盘块总数和所有的盘块号,记入栈,作为当前可供分配的空闲盘块号。

空闲盘块的分配与回收
分配盘块时,须调用分配过程来完成。
先检查空闲盘块号栈是否上锁,如没有,便从栈顶取出一空闲盘块号,将与之对应的盘块分配给用户,然后将栈顶指针下移一格。
若该盘块号已是栈底,即S.free(0),到达当前栈中最后一个可供分配的盘块号。
读取该盘块号所对应的盘块中的信息:即下一组可用的盘块号入栈。
原栈底盘块分配出去。修改栈中的空闲盘块数。
回收
回收盘块号记入栈顶,空闲数N加1
N达到100时,若再回收一块,则将该100条信息填写入新回收块。

第八章 磁盘存储器的管理(二)——文件存储空间的管理相关推荐

  1. 操作系统中文件存储空间的管理

    一.文件存储空间管理的概念 由于文件存储设备是分成若干个大小相等的物理块,并以块为单位来交换信息的,因此,文件存储空间的管理实质上是一个空闲块的组织和管理问题,它包括空闲块组织,空闲块的分配和空闲块的 ...

  2. 六、文件管理(5.文件存储空间的管理)

    一.存储空间的划分和初始化 存储空间的划分:         将物理磁盘划分为一个个文件卷(逻辑卷.逻辑盘). 在存储空间初始化时,需要将各个文件卷划分为目录区.文件区. (1) 目录区:主要存放文件 ...

  3. Linux常用命令备忘(启动管理、文件或目录管理、系统管理)

    启动管理命令 halt  关闭计算机 halt    //关闭计算机,不关闭电源 halt -p    //关闭计算机并关闭电源 login  登陆系统 login    //登陆用户,并将提示输入用 ...

  4. oracle将非OMF管理的文件转换为OMF管理的文件

    参考链接:https://www.thegeekdiary.com/how-to-convert-non-omf-to-omf-files-oracle-managed-file-conversion ...

  5. DJ6-4 文件存储空间的管理

    目录 6.4.1  空闲表 1.存储空间的分配与回收 2.空闲表法的优缺点 6.4.2  空闲链表 1.空闲盘块链 2.空闲盘区链 6.4.3  位示图 1.位示图的表示 2.存储空间的分配 3.存储 ...

  6. 操作系统---文件的空闲管理

    文件存储空间的管理 实质上是一个空闲块的组织和管理问题,它包括空闲块组织,空闲块的分配和空闲块的回收等几个问题. 空闲区表法 空闲表法属于连续分配方式.它与内存管理中的动态分区分配方式相似. 将外存空 ...

  7. OMF(Oracle Managed Files,Oracle管理的文件)介绍

    Oracle Managed Files是一个文件命名策略,让你可以按照数据库对象而不是文件名来指定操作.Oracle 管理的文件简化了Oracle数据库的管理,减少错误和降低浪费的磁盘空间. 使用O ...

  8. 如何恢复录音删除的录音文件_如何管理手机上的录音文件

    经常使用手机录音的朋友,都会遇到一个棘手的问题,手机里的录音文件多且杂乱,自己从众多录音里找到需要的那个都是件困难的事情,众里寻它千百度,暮然回首,仍深藏原处- 如何解决这个问题呢?下面给大家支几招, ...

  9. 操作系统(2)复习 第八章 磁盘存储器的管理

    第八章 磁盘存储器的管理 1.外存的组织方式 (1)连续组织方式 (2)链接组织方式 (3)索引组织方式 连续组织方式 又称连续分配方式,要求为每一个文件分配一组相邻接的盘块. 把逻辑文件中的记录顺序 ...

最新文章

  1. TLE207x低噪声高速JFET-输入运算放大器的噪声特性测量
  2. LeetCode Course Schedule(有向图中是否存在环)
  3. 第三章:3.6 典型信号傅里叶变换
  4. 金泰联限量稳定虚拟主机赞助计划
  5. python3安装venv虚拟环境
  6. boost的chrono模块时间间隔的测试程序
  7. oracle dba笔试,一个好资企业的的oracle DBA面试试题 大家来看看啊 把答案写下来 最好带注释 测试一下 了 最后30分散分 快来啊...
  8. 1/2 pymysql:Python连接MySQL数据库
  9. 学python买什么书-关于 Python 的经典入门书籍有哪些?
  10. VC++使用dump定位release程序崩溃问题
  11. Ubuntu16.04 pip下载安装tensorflow(GPU版)
  12. 网易云创建添加推荐歌谱和删除操作
  13. c4d需要学哪几种语言,自学C4D要多久才能掌握.看下以下的总结
  14. 基于wifi的温度采集与控制系统
  15. datawhale 学习笔记——建模调参入门
  16. java char取值范围是_Java 基本数据类型取值范围讲解
  17. UE4多人 mysql_UE4 添加多人联机功能
  18. java espresso车架,只爱钢架公路:Casati Espresso
  19. 中国自动浓咖啡机市场趋势报告、技术动态创新及市场预测
  20. 前端vue方法导出为xsml

热门文章

  1. 看完这篇AI算法和笔记,跟面试官扯皮没问题了 | 基于深度学习和传统算法的人体姿态估计
  2. 践行绿色发展理念,产业园区绿色转型发展之五大路径
  3. 【联邦学习FATE框架实战】(二)用FATE从零开始实现横向逻辑回归
  4. 在线提取网页视频的网站
  5. opencv-python 去除图片文字
  6. 外贸人需要准备的浏览器插件有哪些?
  7. 工业母机扶持政策汇总来了,国家-广东省-深圳市
  8. 基于朴素贝叶斯+Python实现垃圾邮件分类和结果分析
  9. HDU 4417 Super Mario(线段树离线处理/主席树)
  10. HDU4417_树状数组加离线