操作系统中的内存管理:连续、交换、碎片

什么是内存管理?

内存管理 是控制和协调计算机内存的过程,将称为块的部分分配给各种正在运行的程序,以优化系统的整体性能。

它是操作系统管理主内存的最重要功能。它帮助进程在主内存和执行磁盘之间来回移动。它帮助操作系统跟踪每个内存位置,无论它是分配给某个进程还是保持空闲。

为什么要使用内存管理?

以下是使用内存管理的原因:

  • 它允许您检查需要分配给进程多少内存,以决定哪个处理器应该在什么时候获得内存。
  • 跟踪库存何时释放或未分配。据此更新状态。
  • 它将空间分配给应用程序例程。
  • 它还确保这些应用程序不会互相干扰。
  • 帮助保护不同的进程
  • 它将程序放在内存中,以便充分利用内存。

内存管理技术

以下是一些最重要的内存管理技术:

单一连续分配

这是最简单的内存管理技术。在这种方法中,除为操作系统保留的一小部分内存外,所有类型的计算机内存都可用于一个应用程序。例如,MS-DOS 操作系统以这种方式分配内存。嵌入式系统也在单个应用程序上运行。

分区分配

它将主内存划分为多个内存分区,这些分区大多是连续的内存区域。每个分区存储特定任务或作业的所有信息。此方法包括在作业开始时为其分配一个分区,并在作业结束时取消分配。

分页内存管理

该方法将计算机的主内存划分为固定大小的单元,称为页框。此硬件内存管理单元将页面映射到应按页分配的帧中。

分段内存管理

分段内存是唯一不为用户程序提供线性连续地址空间的内存管理方法。

段需要以段表的形式提供硬件支持。段表包含内存中段的物理地址、大小以及其他数据(如访问保护位和状态)。

什么是交换?

交换是一种将进程暂时从主内存交换到备用存储器的方法。稍后再将其带回内存继续执行。

后备存储是硬盘或其他辅助存储设备,其容量应足够大,以便容纳所有用户的所有内存映像的副本。它还能够提供对这些内存映像的直接访问。

交换

交换的好处

以下是交换的主要好处/优点:

  • 它提供了更高程度的多道程序设计。
  • 允许动态重定位。例如,如果使用执行时的地址绑定,则进程可以在不同位置交换。否则,在编译和加载时绑定的情况下,进程应移动到同一位置。
  • 它有助于更​​好地利用内存。
  • 完成时 CPU 时间的浪费最少,因此可以轻松应用于基于优先级的调度方法来提高其性能。

什么是内存分配?

内存分配是为计算机程序分配内存或空间的过程。

这里,主内存被分为两种类型的分区

  1. 记忆不足Opera听系统 驻留在这种类型的内存中。
  2. 高内存– 用户进程保存在高端内存中。

分区分配

内存被分成不同的块或分区。每个进程根据需要进行分配。分区分配是避免内部碎片的理想方法。

以下是各种分区分配方案:

  • 第一次拟合:在这种类型适合中,分配的分区是从主存储器开始处开始的第一个足够的块。
  • 最适合: 它将进程分配给空闲分区中第一个最小的分区。
  • 最差匹配: 它将进程分配给 分区,它是主内存中最大的、足够可用的分区。
  • 下一个适合: 它与第一个 Fit 非常相似,但是这个 Fit 从最后一个分配点搜索第一个足够的分区。

什么是分页?

分页是一种存储机制,允许操作系统以页面的形式将进程从辅助存储检索到主内存中。在分页方法中,主内存被划分为小的固定大小的物理内存块,这些块称为帧。帧的大小应与页面的大小相同,以最大限度地利用主内存并避免外部碎片。 分页 用于更快地访问数据,这是一个合乎逻辑的概念。

什么是碎片化?

进程被存储并从内存中删除,从而产生了空闲的内存空间,这些空间太小而无法被其他进程使用。

有时,由于内存块太小,进程无法分配内存块,并且内存块始终处于未使用状态,这种情况称为碎片化。此类问题发生在动态内存分配系统中,当空闲块非常小时,系统无法满足任何请求。

两种类型的碎片化方法是:

  1. 外部碎片化
  2. 内部碎片化
  • 通过重新排列内存内容以将所有可用内存放在一个块中,可以减少外部碎片。
  • 通过分配最小的分区可以减少内部碎片,但仍然足以承载整个过程。

什么是分段?

分段方法的工作原理与分页方法几乎相似。两者之间的唯一区别是,分段的长度是可变的,而分页方法中的页面始终是固定大小的。

程序段包括程序的主函数、数据结构、实用函数等。操作系统为所有进程维护一个段映射表。它还包括一个空闲内存块列表,以及它的大小、段号和它在主内存或 虚拟内存.

什么是动态加载?

动态加载是程序的一个例程,直到程序调用它时才会加载。所有例程都应以可重定位加载格式包含在磁盘上。主程序将加载到内存中并执行。动态加载还可以提高内存空间利用率。

什么是动态链接?

链接是一种帮助操作系统将各种代码和数据模块收集并合并到单个可执行文件中的方法。该文件可以加载到内存中并执行。操作系统可以将系统级库链接到加载时合并库的程序中。在动态链接方法中,库在执行时链接,因此程序代码大小可以保持较小。

静态加载与动态加载之间的区别

静态加载 动态加载
当您想静态加载程序时,可以使用静态加载。然后在编译时,整个程序将被链接和编译,而无需任何外部模块或程序依赖项。 在动态加载的程序中,将提供引用,并且在执行时完成加载。
在加载时,整个程序被加载到内存中并开始执行。 仅当程序需要时,库的例程才会被加载到内存中。

静态链接和动态链接之间的区别

以下是静态链接和动态链接的主要区别:

静态链接 动态链接
静态链接用于将程序所需的所有其他模块组合成单个可执行代码。这有助于操作系统防止任何运行时依赖性。 使用动态链接时,不需要将实际的模块或库链接到程序。而是使用编译和链接时提供的动态模块的引用。

总结

  • 内存管理是控制和协调计算机内存的过程,将称为块的部分分配给各种正在运行的程序,以优化系统的整体性能。
  • 它允许您检查需要分配给进程多少内存,以决定哪个处理器应该在什么时候获得内存。
  • 在单一连续分配中,除为操作系统保留的一小部分外,所有类型的计算机内存均可用于一个应用程序
  • 分区分配方法将主内存划分为多个内存分区,这些分区大多是连续的内存区域
  • 分页内存管理方法将计算机的主内存划分为固定大小的单元,称为页框
  • 分段内存是唯一不为用户程序提供线性连续地址空间的内存管理方法。
  • 交换是一种将进程暂时从主内存交换到备用存储器的方法。稍后再将其带回内存继续执行。
  • 内存分配是为计算机程序分配内存或空间的过程。
  • 分页是一种存储机制,它允许操作系统以页面的形式将进程从二级存储器检索到主存储器中。
  • 碎片是指磁盘中文件被分成多个碎片并散布在磁盘各处的状态。
  • 分段方法的工作原理与分页方法几乎相似。两者之间的唯一区别是,分段的长度是可变的,而分页方法中的页面始终是固定大小的。
  • 动态加载是程序的一个例程,只有当程序调用它时才会加载。
  • 链接是一种帮助操作系统将各种代码和数据模块收集并合并为单个可执行文件的方法。