《文件存储空间管理:对空闲存储空间的组织与管理之道》
一、文件存储空间管理的实质
图片来源于网络,如有侵权联系删除
文件的存储空间管理实质是对空闲存储空间的组织和管理,计算机系统中的存储设备(如磁盘等)为文件提供了存储的物理空间,随着文件的创建、删除、修改等操作不断进行,存储设备中的空间会被分割成已用空间(被文件占用)和空闲空间两部分,有效地组织和管理这些空闲空间,是文件存储空间管理的核心任务。
二、文件存储空间的管理方法
1、空闲表法
- 基本原理
- 空闲表法是一种比较直观的管理空闲存储空间的方法,系统为磁盘上的所有空闲盘块建立一张空闲表,表中的每个表项记录一个空闲区的起始盘块号和盘块数等信息,在一个简单的磁盘存储系统中,如果磁盘被划分为1000个盘块,其中有多个不连续的空闲区,空闲表中的一个表项可能记录着起始盘块号为100,盘块数为50的空闲区,表示从盘块100开始连续的50个盘块是空闲的。
- 分配操作
- 当有文件需要存储空间时,系统会按照一定的策略从空闲表中查找合适的空闲区进行分配,一种常见的策略是首次适应算法,即从空闲表的表头开始顺序查找,找到第一个满足文件大小要求的空闲区,假设一个文件需要30个盘块的存储空间,系统从空闲表的第一个表项开始检查,若起始盘块号为50、盘块数为40的空闲区满足要求,就将这个空闲区分配给该文件,分配时,可能会对这个空闲区进行分割,如果文件只需要30个盘块,那么这个空闲区就会被分割成起始盘块号为50、盘块数为30的已分配区和起始盘块号为80、盘块数为10的新空闲区,并且更新空闲表。
- 回收操作
- 当文件被删除时,其占用的盘块将被回收,回收操作需要将这些盘块合并到空闲表中的空闲区中,如果回收的盘块与空闲表中的某个空闲区相邻,就需要将它们合并成一个更大的空闲区,若刚刚删除的文件占用的盘块为150 - 170,而空闲表中有一个空闲区起始盘块号为171、盘块数为20,那么就可以将这两个区域合并成一个起始盘块号为150、盘块数为41的空闲区,并更新空闲表。
2、空闲链表法
- 基本原理
图片来源于网络,如有侵权联系删除
- 空闲链表法是将磁盘上的所有空闲盘块通过指针链接成一个链表,每个空闲盘块中都有一部分空间用于存放指向下一个空闲盘块的指针,磁盘的第一个空闲盘块中除了自身的空闲空间标识外,还存放着指向第二个空闲盘块的指针,第二个空闲盘块又存放着指向第三个空闲盘块的指针,以此类推。
- 分配操作
- 在进行分配时,根据不同的策略从空闲链表中取出空闲盘块,比如采用循环首次适应算法,从上次查找结束的位置开始在链表中查找满足文件大小要求的空闲盘块,如果一个文件需要10个盘块,系统从链表的当前位置开始查找,找到连续的10个空闲盘块后就将它们分配给文件,如果链表中的空闲盘块不连续,可能需要遍历较长的链表来凑够所需的盘块数。
- 回收操作
- 当文件删除释放盘块时,将释放的盘块插入到空闲链表中,如果释放的盘块与链表中的某个空闲盘块相邻,可以进行合并操作,释放的盘块为200 - 205,而链表中有一个空闲盘块206,就可以将它们合并成一个较大的空闲盘块200 - 206,并调整链表中的指针。
3、位示图法
- 基本原理
- 位示图是用二进制位来表示磁盘上每个盘块的使用情况,假设磁盘有n个盘块,就用n个二进制位组成一个位示图,如果位示图中的某一位为0,表示对应的盘块是空闲的;如果为1,则表示该盘块已被占用,一个磁盘有1024个盘块,位示图就有1024位(可以用128个字节来存储),位示图的第0位对应磁盘的第0个盘块,第1位对应第1个盘块,以此类推。
- 分配操作
- 当需要分配盘块时,系统会在位示图中查找为0的位,可以采用顺序查找或其他优化的查找算法,一旦找到为0的位,就将其置为1,表示该盘块已被分配,然后根据位在位示图中的位置计算出对应的盘块号,如果位示图是按字节存储的,某一找到的0位在位示图中的偏移量为i(以位为单位),则对应的盘块号为i。
- 回收操作
图片来源于网络,如有侵权联系删除
- 当文件删除释放盘块时,根据释放盘块的盘块号计算出在位示图中的位置,将对应的位从1置为0,表示该盘块变为空闲状态。
4、成组链接法
- 基本原理
- 成组链接法是一种综合考虑效率和空间管理复杂度的方法,它将磁盘上的空闲盘块分成若干组,每组的第一个盘块中记录着下一组的盘块数量和盘块号等信息,磁盘上的空闲盘块被分成了3组,第一组有10个空闲盘块,第一个盘块中除了自身的空闲标识外,还记录着第二组的盘块数量(假设为8个)和第二组的起始盘块号。
- 分配操作
- 在分配盘块时,先从第一组开始分配,如果第一组的空闲盘块能够满足文件的需求,就直接从第一组分配;如果第一组的盘块不够,就根据第一组第一个盘块中的信息找到下一组进行分配,一个文件需要12个盘块,第一组只有10个盘块,那么就根据第一组第一个盘块中的信息找到第二组,从第二组中分配12个盘块。
- 回收操作
- 回收盘块时,将回收的盘块加入到相应的组中,如果某一组的盘块数量达到一定上限,可能会进行组的调整,例如将一部分盘块移到其他组或者重新分组,以保证空闲盘块的有效管理。
不同的文件存储空间管理方法各有优劣,空闲表法适合于连续分配的情况,管理简单但可能存在较多的碎片;空闲链表法灵活性较高但查找空闲盘块的效率可能较低;位示图法空间占用小且查找方便,但对盘块的分配和回收操作相对复杂;成组链接法在管理大量空闲盘块时具有较好的性能表现,在实际的操作系统中,需要根据具体的存储需求、系统性能要求等因素选择合适的文件存储空间管理方法。
评论列表