讲解Linux中的内存管理

运维 系统运维
对于那些想了解Linux的人,这里介绍动态内存管理的一些东西。Linux的源代码是开放的,任何人都可以获取并修改,用之开发自己的产品。人们已成功使Linux运行于数百种硬件平台之上。

对于那些想了解Linux的人,这里介绍动态内存管理的一些东西。Linux的源代码是开放的,任何人都可以获取并修改,用之开发自己的产品。人们已成功使Linux运行于数百种硬件平台之上。良好的操作系统性能部分依赖于操作系统有效管理资源的能力。

在过去,堆内存管理器是实际的规范,但是其性能会受到内存碎片和内存回收需求的影响。现在,Linux® 内核使用了源自于 Solaris 的一种方法,但是这种方法在嵌入式系统中已经使用了很长时间了,它是将内存作为对象按照大小进行分配。

动态内存管理

内存管理的目标是提供一种方法,为实现各种目的而在各个用户之间实现内存共享。内存管理方法应该实现以下两个功能:

最小化管理内存所需的时间
***化用于一般应用的可用内存(最小化管理开销)

内存管理实际上是一种关于权衡的零和游戏。您可以开发一种使用少量内存进行管理的算法,但是要花费更多时间来管理可用内存。也可以开发一个算法来有效地管理内存,但却要使用更多的内存。最终,特定应用程序的需求将促使对这种权衡作出选择。

每个内存管理器都使用了一种基于堆的分配策略。在这种方法中,大块内存(称为 堆)用来为用户定义的目的提供内存。当用户需要一块内存时,就请求给自己分配一定大小的内存。堆管理器会查看可用内存的情况(使用特定算法)并返回一块内存。搜索过程中使用的一些算法有 first-fit(在堆中搜索到的***个满足请求的内存块)和 best-fit(使用堆中满足请求的最合适的内存块)。当用户使用完内存后,就将内存返回给堆。

这种基于堆的分配策略的根本问题是碎片(fragmentation)。当内存块被分配后,它们会以不同的顺序在不同的时间返回。这样会在堆中留下一些洞,需要花一些时间才能有效地管理空闲内存。这种算法通常具有较高的内存使用效率(分配需要的内存),但是却需要花费更多时间来对堆进行管理。

另外一种方法称为 buddy memory allocation,是一种更快的内存分配技术,它将内存划分为 2 的幂次方个分区,并使用 best-fit 方法来分配内存请求。当用户释放内存时,就会检查 buddy 块,查看其相邻的内存块是否也已经被释放。如果是的话,将合并内存块以最小化内存碎片。这个算法的时间效率更高,但是由于使用 best-fit 方法的缘故,会产生内存浪费。

以上就是动态内存管理介绍。

【编辑推荐】

  1. 轻松应用Linux连接校园网
  2. 全面了解Linux进程技术
  3. Linux中的password命令介绍
  4. 学好Linux 了解Linux监管命令
  5. Linux查看所有进程ps -aux命令介绍
责任编辑:小霞 来源: pchome
相关推荐

2009-12-17 11:00:47

Linux内存管理

2010-05-24 13:13:25

Swap空间

2013-06-20 10:25:56

2013-10-11 17:32:18

Linux运维内存管理

2024-01-08 08:42:43

2021-03-17 21:34:44

Linux内存管理

2020-07-28 08:10:33

Linux内存虚拟

2021-05-27 05:28:18

Linux 内存管理

2010-04-08 10:04:59

free命令Linux系统内存监控

2023-10-18 13:31:00

Linux内存

2009-10-20 16:35:26

Linux内存管理

2009-12-25 15:34:54

slab分配器

2022-08-08 08:31:00

Linux内存管理

2017-05-18 16:30:29

Linux内存管理

2009-12-24 17:04:18

nohup命令

2009-12-18 09:48:26

Linux中应用

2009-08-17 08:32:56

Linux操作系统内存管理Linux

2023-07-06 00:45:05

Linux保护模式

2022-07-10 20:47:39

linux中虚拟内存

2024-03-26 09:40:53

Linux优化
点赞
收藏

51CTO技术栈公众号