动态分区的位图

17 Mar 2025 | 阅读 2 分钟

动态分区的主要关注点是跟踪所有空闲和已分配的分区。然而,操作系统使用以下数据结构来完成此任务。

  1. 位图
  2. 链表

位图是一种不太常见的用于存储细节的数据结构。在这种方案中,主内存被划分为一组分配单元。一个或多个分配单元可以根据进程的需要分配给该进程。然而,分配单元的大小是固定的,由操作系统定义,并且永远不会改变。尽管分区大小可能不同,但分配大小是固定的。

操作系统的主要任务是跟踪分区是空闲还是已满。为此,操作系统还管理另一个称为位图的数据结构。

进程或分配单元中的空洞由位图的标志位表示。在下面显示的图像中,为每个分配单元的位定义了一个标志位。然而,这不是一般情况,这取决于操作系统希望为多少分配单元位存储标志位。

如果相邻的分配单元位存在连续的进程,则标志位设置为 1,否则设置为 0。

位图中的一串 0 表示相对分配单元中有空洞,而一串 1 表示相对分配单元中有进程。


os Bit Map for Dynamic Partitioning

使用位图的缺点

1. 操作系统也必须为位图分配一些内存,因为它存储有关分配单元的详细信息。这部分内存不能用于加载任何进程,因此会降低多道程序设计的程度以及吞吐量。

在上面的图像中,

分配单元的大小为 4 位,即 0.5 位。在这里,位图的 1 位代表分配单元的 1 位。

因此,在这种位图配置中,浪费了总主内存的 1/5。

2. 为了识别内存中的任何空洞,操作系统需要搜索位图中的一串 0。这种搜索需要大量时间,这在一定程度上使系统效率低下。