📜  内存管理中的分区分配方法

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

内存管理中的分区分配方法

在操作系统中,以下是四种常见的内存管理技术。

Single contiguous allocation: MS-DOS 使用的最简单的分配方法。所有内存(除了一些为操作系统保留的)都可用于进程。

分区分配:内存被分成不同的块或分区。各工序根据需求进行分配。

分页内存管理:内存被分成固定大小的单元,称为页框,用于虚拟内存环境。

分段内存管理:内存被分成不同的段(段是进程数据或代码的逻辑分组)。在这种管理中,分配的内存不必是连续的。



大多数操作系统(例如 Windows 和 Linux)使用带分页的分段。一个进程被分成多个段,各个段有页面。

Partition Allocation 中,当有多个可自由使用的分区来满足进程的请求时,必须选择一个分区。要选择特定的分区,需要一种分区分配方法。如果避免内部碎片,则认为分区分配方法更好。

当需要将进程加载到主内存时,如果有多个足够大的空闲内存块,则操作系统决定分配哪个空闲块。

有不同的放置算法:

A. 首次拟合

B. 最适合

C. 最不适合

D. 下一次拟合



1. First Fit : 在第一次 fit 中,分区被分配,它是从主内存顶部开始的第一个足够的块。它从头开始扫描内存并选择第一个足够大的可用块。因此它分配第一个足够大的孔。

2. Best Fit将进程分配到空闲可用分区中第一个最小的足够分区。它搜索整个孔列表以找到大小大于或等于进程大小的最小孔。

3. Worst Fit将进程分配到主内存中可用的自由可用分区中最大的分区。它与最佳拟合算法相反。它搜索整个孔列表以找到最大的孔并将其分配给处理。

4. Next Fit:Next Fit与第一次拟合类似,但它会从最后一个分配点开始搜索第一个足够的分区。

最佳拟合真的是最好的吗?
尽管最佳拟合最大限度地减少了浪费空间,但它会消耗大量处理器时间来搜索接近所需大小的块。此外,在某些情况下,Best-fit 的性能可能比其他算法差。例如,请参见下面的练习。

练习:考虑来自进程的请求,顺序为 300K、25K、125K 和 50K。假设有两个大小为 150K 的可用内存块,然后是一个大小为 350K 的块。

以下哪种分区分配方案可以满足上述要求?
A) 最适合但不是最适合。
B)首先适合但不是最适合。
C)首先适合和最佳适合。
D)既不是最适合也不是最适合。

解决方案:让我们尝试所有选项。
最合适:
300K 是从大小为 350K 的块中分配的。 50 留在块中。
从剩余的 50K 块中分配 25K。块中剩余 25K。
125K 是从 150 K 块中分配的。该块中还剩下 25K。
即使有 25K + 25K 可用空间,也无法分配 50K。

第一次拟合:
300K 请求从 350K 块中分配,50K 被省略。
从 150K 块中分配 25K,留出 125K。
然后将 125K 和 50K 分配给剩余的遗漏分区。
所以,第一个 fit 可以处理请求。

所以选项B是正确的选择。