第8章 磁盘存储空间的管理

  • 8.2.1 空闲表法
  • 8.2.2 空闲链表法
  • 8.2.3 位示图
  • 8.2.4 成组链接法
  • 总结:磁盘空间管理方法

总图概览:

  1. 磁盘块:
  1. 磁盘块是存储介质上连续扇区所组成的一个区域。
  2. 磁盘块是主存和辅助进行信息交换的最小单位,每次总是交换一块或整数块信息。一般来讲,是2n个扇区。
  1. 为什么存在磁盘块?
  1. 读取方便。由于扇区的存储数量比较小,所以OS将相邻的扇区组合在一起,形成一个块,再对块进行整体的操作。
  1. 分离对底层的依赖:OS忽略对底层物理存储结构的设计。通过虚拟出来磁盘块的概念,在系统中认为块是最小的单位。

8.2.1 空闲表法

  1. 空闲表法属于连续分配方式,与内存的动态分配方式类似,它为每个文件分配一块连续的存储空间。
  2. 系统为外存所有空闲区建立一张空闲表,每个空闲区对应一个空闲表项。再将所有空闲区按其起始盘块号递增的次序排列,形成空闲盘块表。
  3. 存储空间的分配与回收同内存动态分配方法。

  1. 特点:分配速度快,访问速度快;
  2. 分配算法:首次适应算法、最佳适应算法;
  3. 适应场景:对换空间一般采用连续分配方法;多媒体文件,为了减少磁头的寻道时间,采用连续分配算法。

8.2.2 空闲链表法

  1. 空闲盘块链

将磁盘上的所有空闲空间以盘块为单位组成一条链,其中的每一个盘块都有指向后继盘块的指针。
优点:分配回收方便;
缺点:盘块数量多,空闲盘块链会很长。

  1. 空闲盘区链

将磁盘上的所有空闲盘区组成一条链。在每个盘区上除含有用于指示下一个空闲盘区的指针外,还应有能指明本盘区大小(盘块数)的信息。
优点:空闲盘块链较短;
缺点:分配回收复杂。

8.2.3 位示图

  1. 位示图
  1. 利用二进制的一位(bit)表示磁盘中一个盘块的使用情况。 值:空闲,0;已分配,1;
  2. 磁盘上的所有盘块都有一个bit与之对应,由所有盘块所对应的位构成一个集合,称为位示图。 行号称为字号,列号称为位号;
  3. 二维数组表示:map[m][n];
  1. 盘块的分配
  1. 顺序扫描位示图,从中找出一个或一组其值为“0”的二进制位;并转换成与之相应的盘块号。例:A文件需要5个物理块.
  2. 修改位示图,令map[i][ j] = 1。
  1. 盘块的回收
  1. 将回收盘块的盘块号转换成位示图中的行号和列号。
  2. 修改位示图。令map[i][ j] = 0。
  1. 盘块号和位示图中元素地址的计算,假设都从0开始
  1. 由位示图计算磁盘的相对块号b,如(字号3,位号4)
    b=字号16+4; 一般性: b=字号n+位号
  2. 将盘块号转换为位示图中的字号和位号,如16盘块:
    字号=16/16; 位号=16 mod 16
    字号=b/n; 位号=b mod n;
  1. 例题

有3200个磁盘块(512byte)可用来存储信息,用字长为16位的字来构造位示图如下。假设CHS从0开始,扇区有8个,H有2个;

(1)位示图共需多少个字?(2)若某文件长度为3200字节,系统将为其分配哪些磁盘块?磁盘块从0开始编号。

解:(1) 共需字:3200/16=200;
(2) 3200/512=7块,从位示图中找到如下7块分配给该文件:19,23,24,25,26,36,37。

8.2.4 成组链接法

  1. 空闲表法和空闲链表法不适合大型文件系统,会使空闲表或空闲链表太长。

空闲块分成若干组,如每100个空闲块为一组,放在一个空闲块中,首先登记了空闲块总数和下一组空间块的物理盘块号。

初始化时,编号12~349为空闲块,共338个,利用空闲块来存放空闲链表,超级块中部分内容作为管理块,假设每个空闲块保存100个空闲块信息。

  1. 成组链接法-分配算法:顺序分配

    现在在这样的情况下,在超级块中有38个空闲块,申请一个物理块就将超级块中的最上面的一块13给分出去,依次进行。当超级块中的情况变为下面这样:

    此时将50号空块里面的内容复制到超级块中,并且修改超级块中的总个数位100,并且将超级块中第一块的空闲块的位置里面指向150号空块,然后将50号空块分配出去。

  2. 成组链接法-回收算法


  1. 成组链接法占空间少(除超级块中内容外,均隐藏在空闲块中),分配、释放快,适合大型文件系统。

总结:磁盘空间管理方法

第8章 磁盘存储空间的管理相关推荐

  1. (五)磁盘存储空间的管理

    为什么80%的码农都做不了架构师?>>>    主要有: 位示图 和内存的位示差不多 空闲块表 和可变内存管理差不多 空闲块链 主要是UNIX成组链接法的设计与实现 UNIX系统文件 ...

  2. 操作系统_第五章文件管理_磁盘存储空间的管理

    如何实现存储空间的分配和回收取决于对空闲块的管理方法. 下面介绍几种常用的管理方法: 一  位示图法 注意,记住这几句话:每个盘面里面有扇区, 扇区里有磁盘组,                     ...

  3. java成组链接法的实现_c++磁盘存储空间的管理模拟(UNIX存储管理的成组链接法的设计与实现)...

    [c++]代码库#include #include #include const int MAXGROUP=10;//定义组的大小 const int MAXJOB=100;//定义一个作业最大能申请 ...

  4. c语言实现磁盘存储空间的分配和回收,操作系统磁盘管理 借鉴资料

    操作系统磁盘管理 借鉴资料 下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览.不比对内容而直接下载带来的问题本站不予受理. 2.下载的文档,不会出现我们的网址水印. 3.该文档所得 ...

  5. linux操作系统 第07章 磁盘管理

    第7章   文件管理 7.1  文件管理概述 7.1.1  文件与文件系统 1. 文件 文件是具有名字的一组相关信息的有序集合,存放在外部存储器中.文件的名字称为文件名,它是文件的标识.文件的信息可以 ...

  6. 操作系统:第五章 磁盘管理 - I/O控制,缓冲区管理

    本文已收录至 Github(MD-Notes),若博客中有图片打不开,可以来我的 Github 仓库:https://github.com/HanquanHq/MD-Notes,涵盖了互联网大厂面试必 ...

  7. 原有磁盘上创建lvm_Linux 系统管理及服务配置实战-第12章 磁盘管理3(连载)

    存储管理Ⅱ 1.逻辑卷LVM 1.1.LVM管理 在线扩容 online 数据迁移 online 创建LVM VG扩展/缩小 LV扩容 文件系统扩容 基本分区(MBR|GPT) ----> Fi ...

  8. (转)MVS-OS390系统管理-第二章 大型服务器外存管理

    http://zmdxyboyandy.blog.bokee.net/bloggermodule/blog_viewblog.do?id=205821 更多文章首页 > 文章 > IBM大 ...

  9. Linux 第九章-系统进程和服务管理

    Linux 第九章-系统进程和服务管理 1.管理Linux进程 ​ 进程是操作系统中非常基本的概念,在系统运维管理中经常设计到对进程的管理. 1.1.什么是进程 ​ 我们在系统中运行的所有文件都是通过 ...

最新文章

  1. Spring读取配置文件,获取bean的几种方式
  2. Python:执行精确的浮点数运算
  3. python dicom 器官分割_图像识别 | 使用Python对医学Dicom文件的预处理(含代码)
  4. LevelDB 源码剖析(六)WAL模块:LOG 结构、读写流程、崩溃恢复
  5. 【转】我们今年二十三四岁。。。
  6. python中使用函数的目的是什么_Python代码中os.mknod()函数起什么作用呢?
  7. 快排、归并、堆排序运用场景
  8. 不相交集java_不相交集类
  9. AD+邮件服务器搭建方案
  10. a59s刷机包卡刷 oppo_OPPO A59st刷机教程_OPPO A59st卡刷升级更新官方系统包
  11. java 在pdf中插入图片_新手教程!如何在PDF文件中插入图像
  12. Ubuntu Dolphinscheduler 执行命令 source: 未找到
  13. 黑马程序员————小牛皮糖学习笔记————IO流之未使用缓冲区读写文件
  14. redis实现坐标附近查询
  15. ​​​​​​​墨画子卿第三章:初心第2节:回家
  16. Python爬取酷狗音乐歌手信息
  17. Speedoffice(PPT)怎么自定义设置幻灯片大小
  18. linux中network启动不了的三种解决方案
  19. 第2周 Python基本图形绘制
  20. 按键控制8*8led点阵C语言程序,单片机按键控制8X8LED点阵屏显示图形 程序的几个问题...

热门文章

  1. PHP Unsupported operand types
  2. java用户登录伪代码怎么写_Java伪代码示例
  3. 软件测试不得不知的基础知识
  4. python基础:inspect模块各函数的用法
  5. 内容为王、游戏出海、技术变革,2020年游戏行业有哪些新趋势?
  6. ZPiE: Zero-knowledge Proofs in Embedded systems
  7. 字节、字、位、比特的概念和关系
  8. 出差带什么东西(深圳)
  9. Python实用记录(一):如何将不同类型视频按关键帧提取并保存图片,实现图片裁剪功能
  10. memset函数详解