操作系统 内存管理

操作系统 内存管理

在这篇文章中,我们将详细了解内存管理。

什么是内存管理

内存是计算机的重要部分,用于存储数据。内存管理对于计算机系统非常重要,因为计算机系统中可用的主内存量非常有限。在任何时间,许多进程都在竞争使用内存。此外,为了提高性能,多个进程会同时执行。为此,我们必须将多个进程存储在主内存中,因此更加重要的是有效地管理它们。
操作系统 内存管理

内存管理的角色

以下是计算机系统中内存管理的重要角色:

  • 内存管理器用于跟踪内存位置的状态,即它是否空闲或分配。它通过提供抽象来寻址主内存,使软件感知分配给它的大内存。
  • 内存管理器允许具有较小量主内存的计算机执行大于可用内存大小或量的程序。它通过使用交换的概念在主内存和辅助内存之间来回移动信息来实现这一点。
  • 内存管理器负责保护每个进程分配的内存免受其他进程破坏。如果不能保证这一点,系统可能会出现不可预测的行为。
  • 内存管理器应该启用进程之间的内存空间共享。因此,两个程序可以在相同的内存位置上驻留,尽管在不同的时间。

内存管理技术

内存管理技术可以分为以下主要类别:

  • 连续内存管理方案
  • 非连续内存管理方案

操作系统 内存管理

连续内存管理方案

在连续内存管理方案中,每个程序占据一个连续的存储位置块,即一组具有连续地址的存储位置。

单一连续内存管理方案

单一连续内存管理方案是最早一代计算机系统中使用的最简单的内存管理方案。在这种方案中,主内存被划分为两个连续的区域或分区。操作系统永久地驻留在一个分区中,通常在较低的内存位置,用户进程加载到另一个分区中。

单一连续内存管理方案的优势:

  • 实施简单。
  • 易于管理和设计。
  • 在单一连续内存管理方案中,一旦进程加载,它将获得完整的处理器时间,没有其他处理器会中断它。

    单一连续内存管理方案的缺点:

  • 由于进程不太可能使用所有可用的内存空间,导致内存空间的浪费。

  • CPU保持空闲,等待硬盘将二进制文件加载到主内存中。
  • 如果程序太大而无法适应整个可用的主内存空间,则无法执行。
  • 不支持多道程序设计,即无法同时处理多个程序。

多分区

单一连续内存管理方案效率低下,限制计算机同时执行一次性只能运行一个程序,导致内存空间和CPU时间的浪费。通过多道程序设计可以克服CPU利用不足的问题,允许多个程序并发运行。为了在两个进程之间切换,操作系统需要将两个进程加载到主内存中。操作系统需要将可用的主内存划分为多个部分,以将多个进程加载到主内存中。因此,多个进程可以同时驻留在主内存中。

多分区方案可以分为两种类型:

  • 固定分区
  • 动态分区

固定分区

在固定分区内存管理方案或静态分区中,主内存被划分为几个固定大小的分区。这些分区可以是相同大小或不同大小。每个分区只能容纳一个进程。分区的数量决定了多道程序设计的程度,即内存中的最大进程数。这些分区在系统生成时创建,之后保持不变。

固定分区内存管理方案的优势:

  • 实施简单。
  • 易于管理和设计。

    固定分区内存管理方案的缺点:

  • 这种方案存在内部碎片。

  • 分区数量在系统生成时指定。

动态分区

动态分区设计旨在克服固定分区方案的问题。 在动态分区方案中,每个进程只占用加载进行处理时所需的内存量。 被请求的进程将被分配内存,直到整个物理内存耗尽或剩余空间不足以容纳请求的进程。 在该方案中,使用的分区大小可变,分区数量在系统生成时不确定。

动态分区内存管理方案的优点:

  • 实施简单。
  • 管理和设计容易。

动态分区内存管理方案的缺点:

  • 此方案也会导致内部碎片。
  • 分区数量在系统分割时指定。

不连续的内存管理方案

在不连续的内存管理方案中,程序被划分为不同的块,并加载到内存的不同部分,这些部分不一定相邻。 根据块的大小以及块是否驻留在主存储器中,可以对此方案进行分类。

分页是什么

分页是一种消除主存储器连续分配要求的技术。 在这种技术中,主存储器被划分为物理内存大小相同的固定大小块,称为页面。 页面的大小应保持与页大小相同,以最大化主存储器并避免外部碎片。

分页的优点:

  • 页面减少了外部碎片。
  • 实施简单。
  • 内存效率高。
  • 由于帧大小相等,交换变得非常容易。
  • 用于更快地访问数据。

什么是分段

分段是一种消除主存储器连续分配要求的技术。 在这种技术中,主存储器被划分为物理内存大小可变的块,称为段。 它基于程序员按照其程序结构的方式进行。 使用分段内存分配,每个作业被划分为数个不同大小的段,为每个模块分配一个段。 函数,子程序,堆栈,数组等都是此类模块的示例。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程