操作系统中的连续内存分配2025年4月4日 | 阅读7分钟 为软件应用程序分配空间称为内存分配。内存是由大量的字节组成的。连续内存分配和非连续内存分配是内存分配的两种基本类型。连续内存分配允许任务在单个内存区域中完成。相反,非连续内存分配将过程分布在不同内存区域的多个内存位置。 在本篇文章中,我们将更深入地探讨连续内存分配及其优缺点。 什么是连续内存分配?操作系统中的内存分配方法是连续内存分配。但是,什么是内存分配呢?软件或进程需要内存空间才能运行。因此,必须为进程分配与其需求相对应的特定数量的内存。内存分配是这个过程的术语。 连续内存分配是这些内存分配策略之一。顾名思义,我们使用此策略为每个进程分配连续的内存块。因此,当进程请求访问主内存时,我们会根据其大小,从完全空闲的区域分配一个连续的段给进程。 连续内存分配技术根据请求内存的进程的需求,分配一个连续的内存块。 通过创建固定大小的内存分区,并将单个进程分配给每个分区来完成。因此,多道程序设计的数量将受限于基于内存的固定分区数量。 此分配也会导致内部碎片。考虑一种情况,其中分配给进程的固定大小内存块比实际需要的略大。内部碎片是这种情况下的剩余内存空间的术语。当一个进程完成其在分区中的工作后,该分区即可供另一个进程运行。 在可变分区方案中,操作系统维护一个表,列出哪些内存分区是空闲的,哪些被进程使用。连续内存分配减少了地址转换开销,加快了进程执行速度。 根据连续内存分配技术,如果需要为进程分配内存空间,我们必须为其提供一个连续的空闲空间块。有两种分配方法:
让我们深入探讨这两种策略,以及它们的优缺点。 固定大小分区法在此连续内存分配方法中,每个进程在主内存中被分配一个固定大小的连续块。这意味着整个内存将被划分为固定大小的连续块,并且每次进程进入系统时,都会被分配一个可用块。因为每个进程获得的内存空间块大小相同,而不管进程的大小如何。静态分区也是此方法的别称。 ![]() 在上图中,输入队列中的三个进程需要内存空间分配。由于我们使用的是固定大小分区技术,内存具有固定大小的块。除了 4MB 的进程,第一个 3MB 的进程被分配了一个 5MB 的块。第二个 1MB 的进程也分配了一个 5MB 的块。因此,进程的大小无关紧要。每个进程都分配相同的固定大小内存块。 显然,在此系统中,内存将被划分为连续块的数量将取决于每个块覆盖的空间量,而这反过来将决定一次可以在主内存中驻留多少进程。 多道程序设计的程度指的是可以同时在内存中运行的进程数量。因此,RAM 中形成的块数决定了系统的多道程序设计水平。 优点 固定大小分区系统具有以下优点:
缺点 尽管固定大小分区策略提供了许多好处,但也存在一些缺点:
![]() 可变大小分区法在使用这种风格的连续内存分配技术时,不创建固定的块或内存分区。相反,根据其需求,为每个进程分配一个可变大小的块。这意味着,如果空间可用,当新进程请求时,就会为其分配相应数量的 RAM。因此,每个块的大小取决于使用它的进程的需求和规格。 ![]() 上述图示中没有固定大小的分区。相反,第一个进程仅获得 3MB 的 RAM,因为它需要这么多。其余三个进程也只获得对其而言所需的空间量。 此方法也称为动态分区,因为块的大小是可变的,并且在新的进程启动时确定。 优点 可变大小分区系统具有以下优点:
缺点 尽管可变大小分区方案有许多好处,但也存在一些缺点:
连续内存分配技术的输入队列到目前为止,我们已经检查了两种不同的连续内存分配策略。但是,当需要为新进程在主内存中分配位置时会发生什么?它将接收的块或段是如何选择的? 分配给进程的连续内存块导致主内存始终已满。然而,当一个过程完成时,它会留下一个称为“空洞”的空块。新的过程可能可以实现这个区域。因此,主内存中存在进程和空洞,并且这些空洞中的每一个都可以分配给新进入的进程。 首次适应 这是一种相当直接的技术,我们从头开始,分配第一个足够满足进程需求的空洞。首次适应技术也可以应用于我们可以在上次搜索首次适应空洞的地方继续。 最佳适应 这个贪心算法分配满足进程需求的最小空洞,目标是最大限度地减少在静态分区情况下由于内部碎片而可能丢失的内存。因此,为了在不浪费内存的情况下为进程选择最佳匹配,我们必须首先根据空洞的直径对它们进行排序。 最差适应 该策略与最佳适应策略相反。一旦根据大小对空洞进行了排序,最大的空洞将被选中分配给进入的进程。此分配背后的理论是,由于进程被分配了一个很大的空洞,因此会留下很多内部碎片。因此,会留下一个可以容纳几个额外进程的空洞。 连续内存分配的优点和缺点连续内存分配具有一系列的优点和缺点。以下是一些优点和缺点: 优点
缺点
结论
|
我们请求您订阅我们的新闻通讯以获取最新更新。