内存管理中的分区分配方法
在操作系统中,以下是四种常见的内存管理技术。
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是正确的选择。