【第八章】磁盘存储器的管理

磁盘存储器的管理

磁盘存储器具有容量大、存取速度快、可实现随机存取的优点
是实现虚拟存储器系统、存放大量文件的理想设备
现代计算机系统均配置了磁盘存储器
对磁盘存储器管理的主要任务和要求
采用合理的文件分配方式,为文件分配必要的存储空间,使每个文件能“各得其所”——8.1外存的组织方式
有效减少磁盘碎片,改善存储空间的利用率——8.2文件存储空间的管理
提高磁盘的I/O速度,改善文件系统的性能
提高磁盘系统的可靠性

外存的组织方式

OS将分配给每个文件的若干盘块采用何种方式组织在一起,使每个文件能够正确的访问到属于自己的盘块——盘块的组织方式
外存的组织方式决定了文件的物理结构

在这里插入图片描述

连续组织方式

:文件分配到了一组连续的盘块,则OS将采用连续组织方式管理文件分到的盘块
盘块的组织:是创建一个目录文件来存储每个文件的信息
在目录文件中记录每个文件的文件名、起始盘块号、长度(分到的盘块数量)

连续文件A需要存储到磁盘上,已知文件A的大小为2152B,每个盘块的大小为512B,系统中盘块的使用情况如图所示。请回答:文件A需要几个盘块?系统为文件A分配了哪些盘块?应如何组织文件A分到的盘块?

系统中的连续文件目录如下。若一个盘块大小为512B,则用户文件F4中逻辑地址为3070B的数据存储在哪个物理块中?为了读取该数据,需要启动几次磁盘?

在这里插入图片描述

连续分配方式优点——对换区使用的组织方式
“顺序访问文件容易:从起始盘块号开始可以按照顺序依次访问文件的每一个盘块
·能够实现对任一逻辑地址的随机访问:起始盘块号+逻辑块号
”顺序访问速度快:因为文件所有的盘块按柱面顺序存放,位于同一个或相邻的柱面上,因此磁头的移动距离少
连续分配方式缺点
·文件需要占用连续的盘块,降低了磁盘空间的利用率,会出现许多外部碎片,虽可以通过紧法方法消除,但需要大量的时间
须事先知道文件大小,只能估算,估算小了文件无法存入磁盘、大了造成空间浪费
动态增长的文件很难事先知道文件的最终大小,即使能事先估算出而预先分配好,但会使这些空间长期空闲
不能灵活地插入和删除记录,为了保持文件的有序性,插入和删除时需要移动大量的数据,文件的大小会动态变化

例如:某连续文件F共使用了10个盘块,每个盘块上存储一条记录 现在想在逻辑记录F2后插入一条新的记录Fi(记录号从0开始编号)盘块读入内存、写回磁盘都各需要启动1次磁盘。请分析插入该记录 最少需要启动几次磁盘?文件F的存储情况如图所示:

链接组织方式

文件分配多个不连续盘块,通过盘块上的链接指针链接成链表
链接组织形成的物理文件称为链接文件
也是想连续组织方式一样设置一个目录表,然后在目录表上存储每个文件的信息,包括文件名、起始盘块、结束盘块。
链接组织方式主要优点:
1消除磁盘外部碎片,提高外存利用率
2插入、删除和修改记录非常容易
3能适应文件动态增长,无需事先知道文件大小

某系统采用隐式链接组织盘块,每个盘块大小512B,盘块中的地址域占2B
[40704(512-2)=8
一个大小为4070B的文件F需要多少个盘块?
若F分到的盘块号依次为:28、30、35、36、42、54、56、78,系统如何管理文件F分到的盘块?

若希望访问文件F中逻辑地址为3070B的数据,需要启动几次磁盘?

例如:某隐式链接文件F共8个盘块,每个盘块上存储一条记录。现需要在第6个逻辑记录F6后插入一条记录Fi。逻辑记录号从0开始编号、盘块读入内存、写回磁盘都启动1次磁盘。请分析插入该记录需要启动几次磁盘?

隐式链接的缺点
只能采用顺序访问方式。例如读取第i个逻辑块需要启动i+1次磁盘,其中前i次仅需要地址域,访问效率极低
离散的盘块通过链接指针组织,安全性较差。若某个盘块损坏,则其后面的数据就会丢失
显示链接
针对隐式链接中读取一个盘块需要多次启动磁盘的不足而提出的
显示链接实现
不仅使用了目录表来存储文件的起始盘块,还在内存中存一个FAT表,用来存储链接信息。
使用**文件分配表(FAT)**组织盘块,整个系统仅有一张,存储在磁盘上,开机后常驻内存
一个文件分到一组离散盘块后,将起始盘块号记入目录中,其它盘块号记入FAT上一个盘块号中

显示链接文件F分到的5个盘块依次为:28、35、26、30、22。

请给出系统如何组织文件F分到的盘块
在目录中添加文件F的目录项,内容为文件名和起始盘块号
下一个盘块号35记在FAT[28]中
盘块号26记入FAT[35]中
后面的盘块号同理存放
FAT[最后一个盘块号]记入EOF,即FAT[22]=EOF

<img src="第八章-磁盘存储器的管理.assets/image-20231223211524575-1703337326514-7.png" alt="image-20231223211524575" style="zoom:33%;"style="zoom:33%;" />

单级索引组织方式

链接方式解决连续分配问题,存在问题:
1不支持直接存取,须在FAT中查找多个盘块号
2AT占用较大的内存空间

索引方式为每个文件分配一索引块,记录文件所有盘块号
目录项有指向索引块的指针
优点:支持直接访问;不会有外部碎片;适合大文件
问题:小文件索引块利用率低

单级索引:为索引表仅分配一个盘块
盘块组织方式

首先给文件分配一个用于存储索引表的盘块,并将盘块记入文件的目录项中
按顺序将逻辑块存入物理块中,按存入顺序在索引表中记录每个文件逻辑块对应的盘块号
例如:磁盘的每个盘块大小为512B,文件F的大小为2152B,则应该为文件F分多少个盘块?若给文件分配的盘块号依次为:52、36、54、48、51、42,每个盘块的作用是什么?

若一个盘块大小为512B,则如何读取文件F中逻辑地址为1058B的数据
计算该逻辑地址所在的逻辑块号:1058/512=2#
从目录中找到文件F的目录项,从中取出盘块号(52#),启动磁盘读入52#盘块的内容
因索引表的顺序为逻辑块的装入顺序,因此直接访问索引表2]的位置,取出盘块号(48#)
启动磁盘将48#盘块读入内存,访问盘块中的数据
读入任意位置的数据需要启动2次磁盘

若一个盘块大小为512B,索引表的索引项需要2B,则该系统能处理的最大文件为多少字节

多级索引

:文件的索引表分块存储,为分块存储的索引表建立外层
索引(索引的索引表)
单级索引结构能够处理的文件较小,对于较大的文件需要使用多级索引处理
**二级索引为例介绍多级索引的建立过程:**盘块512B,索引项2B
为文件分配第1个盘块作为外层索引物理块,并把该物理块号和文件名记入文件的目录中
为文件分配第2个物理块作为第0个文件索引物理块,并将该物理块号记入外层索引表0的位置
为文件分配第3个物理块作为文件的数据物理块,存放文件的第0个逻辑块,并把该物理块号记入文件索引物理块0[0]
为文件陆续分配盘块存放文件逻辑的第1-255号块,将文件的第0个文件索引物理块装满
此时再为文件分配的物理块,就是第1个文件索引物理块,并将该块号记录外层索引表[1]的位置
继续分配物理块,存放文件的第256个逻辑块,该盘块号记录文件索引表1[0]的位置…

问题1:访间文件F中的逻辑地址A,应如何查找其所在的物理块?查找过程中启动几次磁盘?
问题2:二级索引能处理的最大文件是多少字节
问题3:一个长度为500B的文件需要分配几个盘块?

问题1:访问文件F中的逻辑地址A,应如何查找其所在的物理块查找过程中启动几次磁盘?
计算1个盘块存放的索引项数M=盘块大小/索引项的字节数 A÷盘块大小=逻辑块号L
将逻辑块号分成组号K(L÷M)、组内位移D(L%M)
从目录中取出外层索引表的物理块号,启动磁盘
从外层索引表KK]处取出第K个文件索引表的物理块号,启动磁盘
从文件索引表KID]处取出文件第L个逻辑块的存储盘块,启动磁盘
问题2:二级索引能处理的最大文件是多少字节?盘块512B、索引项2B
256×256×512-2B-32MB
·问题3:一个长度为500B的文件需要分配几个盘块?
一个很小的文件也分配3个盘块,启动3次磁盘。

增量式索引组织方式

:又称混合索引方式,全面照顾各种小、中、大、特大文件的盘块组织
·多级索引可以处理长文件,但对于一个很小的文件也最少分配3个盘块、启动3次磁盘
混合索引方式是UNIX操作系统采用的文件盘块组织方式

混合索引方式的实现
在每个文件的索引结点中设置13个地址项,数组名为addr
其中下标0~9为直接地址项,即其中直接存储的是文件的数据物理块,共10个
下标10为一级索引项,即其中存储的是1级索引的外层索引表所在的盘块号
下标11为二级索引项,即其中存储的是2级索引的最外层索引表所在的盘块号
下标12为三级索引项,即其中存储的是3级索引的最外层索引表所在的盘块号

·若一个文件的长度<=10个盘块,即<=5120B,则仅使用直接方式处理即可
例如:文件A划分成8个逻辑块,若找逻辑地址为3049B的数据所在的物理块,应如何查找?

若一个文件B的长度<=266个盘块,则使用直接方式(10个)和一级索引方式处理
例如:文件B划分成200个逻辑块,若分别找逻辑地址3569B、16197B的数据所在的物理块应如何查找?

16197的逻辑块号为31,则从addr[10]处取出索引块号,启动磁盘读入索引表;
从索引表31-101,即索引表[21]处读取31号逻辑块的物理地址,启动磁盘读入数据——启动2次磁盘

二级索引对应的盘块数:10+256+2562个逻辑块,若访问的逻辑地址158720B,则应如何读取物理块号
158720对应的逻辑块号为310,超过了266,应从二级索引处读取
从addr[11处取出外层索引的物理块号,启动磁盘读出外层索引物理块号
从外层索引表r(310-266)/256]读取文件索引表所在物理块,启动磁盘读入文件索引表
从文件索引表[(310-266)%256]读取文件数据所在物理块,启动磁盘读入数据

三级索引对应的文件大小:10+256+2562+2563个逻辑块,若逻辑地址对应的逻辑块号落在三级索引范围,则读取相应的数据需要启动4次磁盘
在混合索引方式中,若设置13个地址项,0-9为直接地址,10为1级索引、11为二级索引、12为3级索引,每个盘块大小512B,每个索
引项2B,则对应的最大文件为多少字节:
(10+256+2562+2563)×512B一写出式子即可
读取一个逻辑地址中的数据最少启动几次磁盘、最多启动几次磁盘
最少1次,逻辑地址对应的逻辑块号在0-9之间
最多4次,逻辑地址对应的逻辑块号>=10+256+2562,位于3级索引的范围

文件存储空间的管理

文件存储空间的管理有三种方式
空闲表法:使用空闲表管理系统的空闲盘块,为文件分配一组连续的盘块 因此采用连续方式组织文件分到的盘块
位示图法:使用位示图管理磁盘空间,可以为文件分到一组离散的盘块,因此采用链接方式或索引方式管理文件分到的盘块
成组链接法:UNIX系统采用的方式,使用空闲盘块号栈对磁盘的空闲盘块进行管理,为文件分配一组不连续的盘块,因此采用链接方式或索引方式管理文件分到的盘块

空闲表法

:类似内存的动态分区分配算法一对换区使用,速度快
使用空闲盘块表管理磁盘的空闲盘块,结构如下:

盘块分配过程
系统采用首次适应、循环首次适应、最佳适应、最坏适应等算法为存储到磁盘的文件分配空闲盘块,若剩余空间很小,则全部分配给文件
将文件分到的起始盘块号和长度记入目录中一—连续文件
回收过程:删除文件时,从目录中找到文件的起始地址和长度,回收时需要注意回收空间与已有空闲分区的合并

某系统采用首次适应算法为系统分配空闲盘块,空闲盘块表如下,文件F1需要3个盘块、F2需要2个盘块,请给出分配后空闲盘块号表及目录的内容

某文件系统的目录及空闲盘块表如下所示。删除文件F1后,给出目录文件与空闲盘块表的内容

位示图法

——为离散存储的文件分配盘块
使用位示图管理磁盘的盘块,位示图是一个m行n列的二维数组,每个数组元素对应一个盘块的状态(0:分配,1:空闲)
因一个数据元素的取值只有0或1,因此使用一个二进制位即可
位示图的实现:使用一个计算机字对应位示图的一行,根据盘块的数据确定需要多少的个计算机字

例如:某计算机系统600MB的磁盘空间,每个盘块大小为512B,该计算机系统为64位机,请计算位示图需要多少个计算机字?
系统划分的盘块数:600MB:512B=1200K个盘块
每行对应64个盘块,则1200K个盘块需:「1200K÷641=19200个字

例如:某计算机系统字长16位,系统共有70个盘块,请分析该位示图需要多少个计算机字?

使用位示图(8行16列)分配一个盘块的过程:

使用位示图(8行16列)回收一个盘块的过程(假设盘块号为b)

i=b/16;
j=b%16;
A[i,j]=1;

某16位计算机系统,采用位示图管理磁盘空间,外存分配方式使用一级索引方式组织,一个盘块大小为512B,为一个长度为2240B的文件F如何分配盘块?

文件F的数据部分可划分成2240/5121=5个逻辑块
因系统采用一级索引方式,则系统还要为文件F分配一个索引块
因此文件F共需要6个盘块

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值