`
Dustin
  • 浏览: 314664 次
  • 性别: Icon_minigender_1
  • 来自: 广州/成都
社区版块
存档分类
最新评论

Linux内存管理

阅读更多

首先提供Gustavo Duarte写的三篇非常精彩的文章:

1. Anatomy of a Program in Memory

2. How The Kernel Manages Your

3. Page Cache, the Affair Between Memory and Files

 

然后看看Linux下malloc的实现原理:

1. Doug Lea. A Memory Allocator

2. ptmalloc原理分析

 

看完上面的文章,我们对Linux的内存管理就有了大概的印象,也知道了malloc和mmap对于OS而言意味着什么。剩下的有几个问题:

 

1. 在申请大于一定阈值(128K)时,malloc为什么要使用mmap

Efficiency Considerations for malloc 写道
As opposed to other versions, the malloc in the GNU C Library does not round up block sizes to powers of two, neither for large nor for small sizes. Neighboring chunks can be coalesced on a free no matter what their size is. This makes the implementation suitable for all kinds of allocation patterns without generally incurring high memory waste through fragmentation.

Very large blocks (much larger than a page) are allocated with mmap (anonymous or via /dev/zero) by this implementation. This has the great advantage that these chunks are returned to the system immediately when they are freed. Therefore, it cannot happen that a large chunk becomes "locked" in between smaller ones and even after calling free wastes memory. The size threshold for mmap to be used can be adjusted with mallopt. The use of mmap can also be disabled completely

 

2. 处理文件时,是不是使用memory-mapped-file都要优于标准IO

    关于这个问题,可以先了解一下memory mapped file 的优缺点。一个明显的问题是当文件大于虚拟地址空间时,将无法一次性将文件映射到虚拟地址空间里面。此外,也有报告支持在特定的场景下,标准IO要优于memory mapped file。

 

3. 对于非匿名memory mapping,如果文件被修改了,内存中的相应内容会被修改吗?

    不会。

 

4. 应用中如果需要大块的内存,使用malloc还是mmap?各有什么优缺点?

分享到:
评论

相关推荐

    linux内存管理实验报告

    Linux内存管理是操作系统的核心组成部分,它负责有效地分配和回收内存资源,确保系统高效稳定地运行。在本实验中,我们主要探讨了Linux虚拟内存管理的原理、动态内存操作函数的使用,以及如何检测主存使用情况。 ...

    linux内存管理源代码导读

    Linux 内存管理源代码导读 Linux 内存管理是操作系统中最重要的组件之一,它负责管理计算机的内存资源,确保系统的正确运行。在 Linux 操作系统中,内存管理是通过页框管理、Slab 算法和动态存储器管理来实现的。 ...

    Linux内存管理详解.ppt

    Linux内存管理是操作系统的核心组成部分,尤其对于服务器和嵌入式设备等依赖稳定高效内存操作的环境至关重要。在Linux内核中,内存管理涉及到多个层面,包括分配、释放、碎片控制以及高速缓存优化等。 首先,Linux...

    Linux内存管理笔记

    Linux内存管理笔记详细介绍了Linux操作系统内核中内存管理机制的关键知识点,下面将依次对这些知识点进行详细说明: 存储器的层次结构:计算机系统采用分层的存储子系统以在存储容量、访问速度、成本效益之间取得...

    linux内存管理总结

    以下是Linux内存管理的一些关键知识点: 1. **内存管理工具**: - CodeViz:这是一个用于生成代码调用关系图的工具,可以帮助开发者理解代码间的调用结构,虽然在描述中没有详细展开,但它是分析Linux内核源码的...

    linux内存管理结构图

    Linux内存管理是操作系统的核心部分,它负责有效地分配和回收系统中的物理和虚拟内存。在Linux中,内存被划分为多个区域(Zone)和节点(Node),以优化内存的使用和性能。以下是对这些概念的详细解释: 1. **节点...

    Linux内存管理编程技术.doc

    Linux内存管理是操作系统的核心组成部分,它负责有效地分配、管理和回收内存资源。在Linux环境中,程序员通常通过系统调用和库函数来与内存管理接口交互。本实验主要关注两个方面:一是使用malloc()函数进行内存分配...

    Linux内存管理介绍

    ### Linux内存管理介绍 #### 虚拟内存与Linux 在深入探讨Linux内存管理之前,我们先了解一下虚拟内存的基本概念及其在Linux系统中的应用。虚拟内存是一种计算机内存管理技术,它通过将进程的虚拟地址空间映射到...

    一种Linux内存管理机制.pdf

    Linux内存管理机制包括多种层次和策略,旨在高效地分配和回收内存,避免内存耗尽和系统崩溃。本文将深入探讨Linux内存管理模型、伙伴系统、Slab分配流程以及内存回收策略。 首先,Linux内存管理模型将物理内存划分...

    linux内存管理

    ### Linux内存管理详解 #### 一、Intel x86保护模式下的分段与分页机制 在探讨Linux如何实现内存管理之前,我们首先需要理解Intel x86架构下的内存管理基础——分段与分页机制。 **分段机制**: - **段选择器**:...

    深入理解Linux内存管理

    ### 深入理解Linux内存管理 #### 一、引言与概述 本文档旨在深入探讨Linux 2.4版本中的内存管理系统。作者Mel Gorman在2004年撰写了这一篇详尽的文章,其内容涵盖了从启动时的内存分配到运行时内存管理的所有方面...

    Linux内存管理实验.pdf

    Linux内存管理实验是关于Linux操作系统内存管理机制的学习和实践。本实验中会涉及到诸多内存管理的关键概念和工具,如free、vmstat、readelf、objdump等。接下来将详细解释上述内容中涉及的关键知识点。 首先,free...

    linux内存管理工具

    linux内存管理工具

    Linux内存管理 vs. Windows 2000内存管理

    同时,Linux内存管理器提供不同类型的内存区域(如BSS、堆、栈等)以满足不同需求,并且有 slab 分配器优化小对象的分配和回收。 - **Windows 2000**:Windows 2000使用分代垃圾收集(Generational Garbage ...

    深入理解LINUX内存管理学习笔记

    我不可能完全理解LINUX内存管理的精髓,肯定有很多地方理解错误。希望大 家能够指正,以便提高,谢谢。 学习方法: 可能您第一次阅读的时候很多地方都不理解,不用担心。那您可能需要阅读一些 文件系统的知识。 或者...

    linux内存管理-物理内存管理.pdf

    整个内存管理系统可以分为2部分来看待: 第一部分是对物理内存的管理, 第二部分是对虚拟内存的管理. 物理内存管理的对象是板载的物理内存(DDRAM), 它把物理内存按页划分, 并把这些页放到一个池子里面. 物理内存管理...

    Linux内存管理编程

    Linux内存管理编程是操作系统核心部分的关键技术之一,它涉及到如何高效地分配、使用和回收内存资源。本实验旨在帮助你深入理解Linux环境下的内存管理机制,主要包括内存映射(mapping)和解除映射(unmapping),...

    Linux 内存管理详细介绍.docx

    "Linux 内存管理详细介绍" 本文将详细介绍 Linux 内存管理的概念、机制、重要性和组成部分,旨在帮助读者深入了解 Linux 内存管理的原理和实践。 一、Linux 内存管理概述 Linux 内存管理是指对系统内存的分配、...

    《深入理解LINUX内存管理》学习笔记c.PDF

    《深入理解LINUX内存管理》学习笔记c.PDF

Global site tag (gtag.js) - Google Analytics