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

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

null

单一连续分配: MS-DOS使用的最简单的分配方法。所有内存(为操作系统保留的内存除外)都可供进程使用。

分区分配: 内存被划分为不同的块或分区。每个过程都是根据需求分配的。

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

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

大多数操作系统(例如Windows和Linux)使用分页分段。流程分为多个部分,每个部分都有页面。

在里面 分区分配 ,当有多个分区可自由使用以容纳进程的请求时,必须选择一个分区。要选择一个特定的分区,需要一种分区分配方法。如果分区分配方法可以避免内部碎片,则认为它更好。

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

有不同的布局算法:

A.第一次试穿

B.最适合

C.最不合适

D.下一次试穿

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

图片[1]-内存管理中的分区分配方法-yiteyi-C++库

2.最适合 将进程分配到可用分区中第一个最小的足够分区。它搜索整个孔列表,以找到尺寸大于或等于工艺尺寸的最小孔。

图片[2]-内存管理中的分区分配方法-yiteyi-C++库

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

图片[3]-内存管理中的分区分配方法-yiteyi-C++库

4.下一次试穿: Next fit与first fit类似,但它将从最后一个分配点搜索第一个足够的分区。

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

练习: 考虑在给定的顺序300 K,25K,125K和50K的过程请求。假设有两个大小为150K的可用内存块,后面是一个大小为350K的内存块。

以下哪种分区分配方案可以满足上述要求? A) 最合身,但不是第一次合身。 B) 第一次适合,但不是最佳适合。 C) First fit和Best fit。 D) 既不是最适合也不是最适合。

解决方案:让我们尝试所有选项。 最佳匹配: 300K从350K大小的块中分配。街区里还剩下50个。 从剩余的50K块中分配25K。街区还剩下25K。 125K从150K区块分配。这个街区还剩下25K。 即使有25K+25K可用空间,也无法分配50K。

首次试穿: 从350K块分配300K请求,忽略50K请求。 从150K区块中分配25K,不分配125K。 然后将125K和50K分配给剩下的被忽略的分区。 首先,你能处理好请求。

因此,选项B是正确的选择。

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享