存储 频道

内存管理:如何优化计算系统内存

  【IT168 技术】从实际部署情况来看,对于大多数计算和存储而言,所有类型的计算机内存都会有一个上限。在现代计算系统中,内存比其他资源更容易遇到上限,因为操作系统、应用程序和存储总是需要内存。由于不存在无限的内存,所以内存可能会在某个时候被消耗完,这会导致系统不稳定或数据丢失。

  内存不足的问题一直困扰着我们,也由此出现了许多不同的解决办法与功能,它们通常被归入内存管理,下面本文将为大家概述内存管理的全部内容。

  什么是内存管理?

  内存管理就是要确保有尽可能多的可用内存空间来执行新程序、数据和进程。由于内存会被系统的多个部分使用,内存分配和内存管理可以采用不同的形式。

  操作系统——像Microsoft Windows和Linux这样的操作系统,可以使用物理RAM以及硬盘交换空间来管理总的可用内存池。

  编程语言——C编程语言要求开发人员直接管理内存的使用情况,而其他语言,例如Java和C#,则提供自动内存管理。

  应用程序——应用程序会消耗和管理内存,但是其内存管理能力常常受到底层语言和操作系统定义的限制。

  存储内存管理——使用新的NVMe存储驱动器,操作系统可以受益于更快的存储,从而帮助扩展和支持更持久的内存管理形式。

  为了保证有效性,计算机的内存管理功能必须处于硬件和操作系统之间。

Pexels 上的 Fancycrave.com 拍摄的照片

  内存管理的工作原理

  内存管理就是有限物理资源的分配和优化。内存不是统一的——例如,2GB RAM DIMM并不是作为一个大的空间块来使用的,而利用内存分配技术就可以将RAM分割为可用的内存缓存块。

  在制定操作系统或应用程序中的内存管理策略时,通常需要了解RAM中可用的物理地址空间并执行内存分配,以正确地放置、移动和删除内存地址空间中的进程。

  内存地址类型

  操作系统中的静态和动态内存分配与不同的内存地址类型有关。从根本上说,内存地址有两种主要类型:

  物理地址——物理地址是系统RAM中的内存位置,被标识为一组数字。

  逻辑地址——有时也称为虚拟内存。逻辑地址是操作系统和应用程序对执行代码的访问,作为物理地址空间的抽象。

  MMU如何将虚拟地址转换为物理地址?

  计算系统中的内存管理单元(MMU),是将虚拟逻辑地址空间转换为物理地址的核心硬件组件。MMU通常是一种物理硬件,有时称为分页内存管理单元(PMMU)。

  MMU将虚拟地址转换为物理地址的过程称为虚拟地址转换,并使用页面目录指针表(PDPT)将一种地址类型转换为另一种地址类型。

  该过程直接绑定到页表分配、将一种地址类型匹配和管理到另一种地址类型。为了加速虚拟地址的转换,有一种称为转换后备缓冲区(TLB)的缓存机制,它也是虚拟地址到物理地址转换过程的一部分。

  内存分配:静态与动态加载

  应用程序和数据可以通过许多不同的方式加载到内存中,其中两种核心方法是静态加载和动态加载。

  静态加载——代码在执行之前被加载到内存中。用于结构化编程语言,包括C。

  动态加载——根据需要将代码加载到内存中。用于面向对象的编程语言,如Java。

  内存碎片

  在系统中分配内存时,并不是所有可用的内存都以线性方式使用,这可能导致碎片的产生。内存碎片有两种主要类型——内部和外部。

  内部碎片——内存分配给进程或应用程序,但没有使用,留下未分配或碎片式的内存。

  外部碎片——当内存被分配并重新分配时,可能会有很小的内存剩余空间,留下不适合其他进程的内存漏洞或碎片。

  分页

  在逻辑地址空间中,虚拟内存使用分页进行划分,这意味着它被划分为固定的内存单元,称为页面。页面可以有不同的大小,这取决于底层的系统架构和操作系统,页面表管理的过程可能是复杂的。

  分段

  系统主存中的内存分段是一个复杂的过程,它引用内存单元中的特定Bit。

  系统内存中的每个分段都有自己的地址,以改进优化和内存分配。段寄存器是现代系统处理内存分段的主要机制。

  交换

  交换是操作系统从存储设备中声明附加内存的过程。

  交换的工作原理是,操作系统定义一个用作“交换空间”的存储区域,这是一个存储空间,当耗尽、释放和回收物理/虚拟内存空间时,内存进程在这里存储和运行。与传统存储一起使用交换空间是扩展可用内存的一种相对较次的方法,因为它会带来物理RAM之间的额外传输开销。此外,传统的存储设备的接口运行速度比RAM慢。

  然而,随着速度更快的PCIe SSD的出现,交换作为一种扩展内存的方式正在受到重新审视。PCIe SSD提供了高达16 Gb /s的接口连接速度。相比之下,SATA SSD的最大连接速度为6.0 Gb/s。

  为什么我们需要内存管理?

  内存管理是所有现代计算系统的基本要素。随着虚拟化的不断使用和优化资源利用率的需要,内存不断地被分配、删除、分割、使用和重用。使用内存管理技术,可以减轻内存管理错误,从而缓和系统和应用程序的不稳定和故障。

  优势

  ·最大化程序的内存可用性

  ·启用重用和回收未活跃使用的内存

  ·交换可以帮助扩展可用的物理内存

  缺点

  ·会导致内存资源碎片化

  ·增加系统操作的复杂性

  ·带来潜在的性能延迟

  原文作者:Sean Michael Kerner

0
相关文章