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

如何实现存储空间的分配和回收取决于对空闲块的管理方法。 下面介绍几种常用的管理方法:

一  位示图法

注意,记住这几句话:每个盘面里面有扇区, 扇区里有磁盘组,

                                    磁盘组里面有柱面, 柱面里面有磁道; 

由于磁盘被分块后,每一块的大小都是一样的,所以也可仿照 页式存储空间的管理方法,对每个磁盘可以用一张位示图来指示磁盘空间的使用情况。 一个磁盘的分块确定后,根据总块数决定位示图由多少个字组成, 位示图中的每一位与一个磁盘块对应,某位为 "1" 状态表示相应块已被占用,为 “0” 状态表示所对应的块是空闲块。

假定一个盘组共有 100 个柱面, 编号为0~99。 每个柱面上有 8个磁道, 编号为0~7。 每个盘面分成4个扇区, 编号为0~3, 则整个磁盘空间共有4*8*100 = 3200个存储块。 如果用字长为32位的字来构造位示图, 共需100个字, 如图5-16所示。

操作系统_第五章文件管理_磁盘存储空间的管理_第1张图片

如果磁盘块的块号按柱面顺序和盘面顺序来编排,则第0号柱面第0盘面上的块号是0,1,2,3;第0号柱面第1盘面上的块号是4,5,6,7。依此计算, 第0号柱面上共有32块, 编号为0~31, 第1号柱面上的块号就为32~64, 于是位示图中, 第i个字的第j位对应的块号为:

块号 = i * 32+j,  即  块号 = 字号 * 32 + 位号

当有文件要存放到磁盘上是,根据需要的块数查位示图中为“0” 的位, 表示对应的那些存储块空闲, 可供使用。 一方面在位示图中查到的位上置占用标志“1”, 另一方面根据查到的位, 先计算出对应的块号, 然后确定这些可用的存储块在哪个柱面上,对应哪个扇区,属于哪个磁头, 按图5-16的示例,如果假定 M=[块号/32],  N=块号 mod 32,  那么由块号可计算出:

柱面号 = M

磁头号=[N/4]

扇区号=N mod 4

注意: [] 表示取N被4除后商的整数部分,   mod 表示取余

           (后面出现[]类似含义,但不一定除4)

于是,文件信息就可按确定的地址存放到磁盘块上。

当要删去某个文件, 归还存储空间时,可以根据归还块的柱面号、磁头号和扇区号计算出相应的块号, 由块号再推算出它在位示图中的对应位。把这一位的占用标志 “1”清成“0”, 表示该块已成了空闲块。 仍以图5-16为例,根据归还块所在的柱面号、磁头号和扇区号, 计算对应位示图中的字号和位号:

块号=柱面号 * 32 + 磁头号 * 4 + 扇区号

字号=[块号/32]

位号=块号 mod 32

注意: 以上计算式都是以图5-16为例进行的。 在实际应用时,应根据磁盘的结构确定位示图的构造,以及每个柱面上的块数和每个盘面上的扇区数,列出相应的换算公式。确定空闲块地址的通用公式为:

块号=字号*字长 + 位号

柱面号=[块号/柱面上的块数]

磁头号=[(块号 mod 柱面上的块数)/ 盘面上的扇区数]

扇区号=(块号 mod 柱面上的块数) mod 盘面上的扇区数

归还一块时, 寻找位示图中位置的通用公式为:

块号=柱面号*柱面上的块数+磁头号*盘面上的扇区数+扇区号

字号=[块号/字长]

位号=块号 mod 字长

二  空闲块表法

系统为每个磁盘建立一长空闲块表,表中每个登记项记录一组连续空闲块的首块号和块数。 空闲块数为 “0” 的登记项为无效登记项, 如表5-4所示

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

这种管理方式适合采用顺序结构的文件。存储文件时从空闲块表中找一组连续的空闲块,删除文件时把归还的一组连续登记到空闲块表中。

空闲块的分配和回收算法类似主存储器的可变分区管理方式中采用的最先适应、最优适应和最坏适应算法。

你可能感兴趣的:(操作系统,操作系统)