操作系统中的内存管理:连续,交换,分段

什么是内存管理?

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

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

为什么要使用内存管理?

这里是使用内存管理的原因:

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

内存管理技术

这里是一些最关键的内存管理技术:

单一连续分配

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

分区分配

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

分页内存管理

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

分段内存管理

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

段需要段表形式的硬件支持。它包含内存中该节的物理地址,大小以及其他数据,例如访问保护位和状态。

什么是交换?

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

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

交换的好处

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

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

什么是内存分配?

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

在这里,主存储器分为两种类型的分区

  1. 内存不足-操作系统驻留在这种类型的内存中。
  2. 高内存-用户进程保存在高内存中。

分区分配

内存分为不同的块或分区。每个过程均根据要求分配。分区分配是避免内部碎片的理想方法。

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

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

什么是分页?

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

什么是碎片?

进程被存储并从内存中删除,这将创建可用的内存空间,该内存空间太小而无法被其他进程使用。

有时之后,由于其较小的尺寸和始终不使用的内存块而无法分配给内存块的进程称为碎片。当动态内存分配系统中的可用块很小时,会发生这种类型的问题,因此它无法满足任何请求。

碎片方法有两种:

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

什么是细分?

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

程序段包括程序的主要功能,数据结构,实用程序功能等。操作系统为所有进程维护一个段映射表。它还包括可用内存块的列表,以及其大小,段号及其在主内存或虚拟内存中的存储位置。

什么是动态加载?

动态加载是程序的例程,只有在程序调用它之后才加载。所有例程都应以可重载的格式包含在磁盘上。主程序将被加载到内存中并被执行。动态加载还提供了更好的内存空间利用率。

什么是动态链接?

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

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

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

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

这里是静态链接与动态链接之间的主要区别:

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

概要:

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

觉得文章有用?

点个广告表达一下你的爱意吧 !😁