如题:2020年10月
分析:从题目描述来看是磁盘空间管理的内容,实则是文件存储管理,这里与磁盘管理的不同在《操作系统考点之文件系统要点总结及目录分解法》中扩展中的 文件的物理结构? 内容已有相关的描述了。但只是比较简单的说明了下,文件的磁盘空间管理主要解决的是在磁盘上怎么安排文件和目录存储。而存储管理主要关注的是内存管理。这里要着重注意区分的。
答案:选A
如何解决文件存储空间管理呢?实则是对外存磁盘空闲块的管理,这块还是很容易忽略的,前期也没有注意到,再复习一下,详见课本P222
本题实则涉及的是“磁盘空间的分配和回收算法”有四个:
1、位示图法:思想是利用一串二进制位(bit)的值来反映磁盘空间的分配使用情况。通常可用m×n个位数来构成位示图,并使m×n等于磁盘的总块数,如下图所示:
优点:
-
从位示图中很容易找到一个或一组相邻接的空闲盘块。
-
由于位示图很小,占用空间少,因而可将其保存在内存中,进而使在每次进行盘区分配时,无需首先把盘区分配表读入内存,节省磁盘启动时间。
2、空闲块表:思想是专门为空闲块号建立一个表,记录外存储器全部的空闲的物理块。如下图:
实质就是为空闲块编号,并且记录了空闲块的大小,并且按起始盘块号递增。由于块内的空闲块地址是连续的,所以比较适合顺序结构的文件或者说是需要连续分配的文件。
3、空闲块链表:思想是为将外存中所有的空闲物理块连接成一个链表。如下图:
空闲链表法节省了内存,但申请和回收空间速度较慢,实现效率较低。可以看出链表,也没什么算法,就是一个单链表。
空闲表法和空闲链表法都不适用于大型系统,因为这会使空闲表或空闲链表很长,在UNIX采用的成组链接法,结合上述两种方法。
4、成组链接法:重点理解。思想使用了栈思想。详见下图及分析:
分配过程:系统初始化时,将当前可用的组号读入专用块(内存中),如上图第一个可用组,起始是从801,空闲个数是20,这些信息都先入栈。
依次先分配栈顶对应的块号也就是801出栈,栈指针减1,直到栈底820(不再是空闲块了,820是下一组号,里面放的是下一组空闲块的信息,起始701 ,空闲个数是100)弹出后,820号包含信息入栈。直到最后一个组栈底(组号为0时,被认为是空闲链表结束)。
回收是一个入栈的过程。由于组号最后一个出栈项包含了下一组号的空闲块信息,所以成组链接法,可以迅速找到大量的空闲块。正是此题的答案。