📜  操作系统中的可用空间管理

📅  最后修改于: 2022-05-13 01:56:11.508000             🧑  作者: Mango

操作系统中的可用空间管理

系统会跟踪空闲磁盘块,以便在创建文件时为文件分配空间。此外,要重新使用删除文件释放的空间,空闲空间管理变得至关重要。系统维护一个空闲空间列表,用于跟踪未分配给某个文件或目录的磁盘块。可用空间列表主要可以实现为:

  1. 位图或位向量 –
    位图或位向量是位的序列或集合,其中每个位对应一个磁盘块。该位可以取两个值:0 和 1: 0 表示块已分配,1 表示空闲块。
    图 1中磁盘上的给定磁盘块实例(其中分配了绿色块)可以用 16 位位图表示为: 0000111000000110

    好处 -

    • 简单易懂。
    • 找到第一个空闲块是有效的。它需要扫描位图中的字(一组 8 位)以获得非零字。 (0 值字的所有位均为 0)。然后通过扫描非零字中的第一个 1 位来找到第一个空闲块。

    块数可以计算为:
    (每个字的位数)*(0 值字的数量)+ 非零字中第一个第 1 位的偏移量



    对于图 1 ,我们按顺序扫描位图以查找第一个非零字。
    第一组 8 位 (00001110) 构成一个非零字,因为所有位都不为 0。找到非 0 字后,我们寻找第一个 1 位。这是非零字的第 5 位。因此,偏移量 = 5。
    因此,第一个空闲块数 = 8*0+5 = 5。

  2. 链表——
    在这种方法中,空闲磁盘块链接在一起,即空闲块包含指向下一个空闲块的指针。第一个磁盘块的块号存储在磁盘上的单独位置,也缓存在内存中。

    图 2 中,空闲空间列表头指向 Block 5,Block 5 指向 Block 6,下一个空闲块等等。最后一个空闲块将包含一个指示空闲列表结束的空指针。
    这种方法的一个缺点是空闲空间列表遍历所需的 I/O。

  3. 分组——
    这种方法将空闲块的地址存储在第一个空闲块中。第一个空闲块存储一些地址,比如 n 个空闲块。在这 n 个块中,前 n-1 个块实际上是空闲的,最后一个块包含下一个空闲的 n 个块的地址。
    这种方法的一个优点是可以很容易地找到一组空闲磁盘块的地址。
  4. 数数 -
    这种方法存储第一个空闲磁盘块的地址和第一个块之后的 n 个空闲连续磁盘块。
    列表中的每个条目都将包含:
    1. 第一个空闲磁盘块的地址
    2. 数字 n

    例如,在图 1 中,空闲空间列表的第一个条目将是:([块 5 的地址], 2),因为块 5 后面有 2 个连续的空闲块。