GATE 关于最佳适应和首次适应的问题

2025年3月17日 | 阅读 3 分钟

从 GATE 的角度来看,关于最佳适应和首次适应的数值问题经常以 1 分题的形式出现。让我们看一个如下所示的例子。

问:进程请求如下:

25 K, 50 K, 100 K, 75 K


OS GATE question on best fit and first fit

确定哪种算法能最优地满足此要求。

  1. 首次适应算法
  2. 最佳适应算法
  3. 两者都不是
  4. 两者都是

问题中,内存中有五个分区。其中 3 个分区有进程,两个分区是空洞。

我们的任务是检查哪种算法能最优地满足请求。

使用首次适应算法

让我们看看首次适应算法如何解决这个问题。

1. 25 K 需求

算法会扫描列表,直到找到第一个足够大的空洞来满足 25 K 的请求。它在第二个分区中找到了空闲空间,该分区足够大,因此它从 75 K 中分配 25 K 给进程,剩余的 50 K 作为一个空洞存在。


OS GATE question on best fit and first fit 1

2. 50 K 需求

50 K 的需求可以通过将大小为 50 K 的第三个分区分配给进程来满足。不会产生新的空闲空间。


OS GATE question on best fit and first fit 2

3. 100 K 需求

100 K 的需求可以通过使用大小为 175 K 的第五个分区来满足。从 175 K 中,将分配 100 K,剩余的 75 K 将作为一个空洞存在。


OS GATE question on best fit and first fit 3

4. 75 K 需求

由于我们有一个 75 K 的空闲分区,因此我们可以将这么多空间分配给需要 75 K 空间的进程。


OS GATE question on best fit and first fit 4

使用首次适应算法,我们最优地满足了所有请求,没有留下无用的空间。

让我们看看最佳适应算法如何处理这个问题。

使用最佳适应算法

1. 25 K 需求

要使用最佳适应方法分配 25 K 空间,需要扫描整个列表,然后我们发现一个 75 K 的分区是空闲的,并且在所有分区中是最小的,可以满足进程的需求。

因此,从那 75 K 的空闲分区中分配 25 K 给进程,剩余的 50 K 作为一个空洞存在。


OS GATE question Best Fit Algorithm

2. 50 K 需求

为了满足这个需求,我们将再次扫描整个列表,然后找到 50 K 的空间是空闲的,这与需求完全匹配。因此,它将被分配给进程。


OS GATE question Best Fit Algorithm 2

3. 100 K 需求

100 K 的需求与 175 K 的空间足够接近。算法扫描整个列表,然后从第五个空闲分区中分配 175 K 中的 100 K。


OS GATE question Best Fit Algorithm 3

4. 75 K 需求

75 K 的需求将从第六个空闲分区获得 75 K 的空间,但算法将在做出此决策的过程中扫描整个列表。


OS GATE question Best Fit Algorithm 4

通过遵循这两种算法,我们注意到在这两种情况下,两种算法的表现大多相似。

两者都能满足进程的需求,但是,最佳适应算法会一遍又一遍地扫描列表,这需要花费大量时间。

因此,如果您问我哪种算法以更优化的方式执行,那么肯定是首次适应算法

因此,在这种情况下,答案是 A。


下一主题分页的需求