一个内存分配器的设计和实现

一个内存分配器的设计和实现

论文摘要

大部分C/C++开发工具自带的动态内存分配器或动态内存管理函数不仅运行速度慢,而且页面性能比较差,不适合用于内存频繁分配和释放的场合,而一般专用的内存分配器虽然性能好,但是通用性差,而且技术保密。本论文论述了设计和开发一个可移植性非常好的堆内存分配器,取名HLP,可以运行在Windows, Linux, Unix,甚至某些嵌入式系统上。HLP的开发过程没有使用单一的理论,而是尝试了把堆层次和池式内存管理相结合。出于可扩充性和易于理解的需要,设计并实现了一个全新的架构,该架构具有良好的可维护性。结合实际情况,HLP的实现中巧妙地改进了三个基本算法,位图、边界标记和分割列表。改进后的位图和边界标记算法消除了额外空间开销。分割列表算法改进后变成了桶,大幅度降低了内部碎片。HLP提供了统一符合习惯的用户接口,这样,程序员无需了解HLP复杂的内部细节就可以很方便地使用它了。测试发现,HLP不仅运行速度上有了质的飞越,而且页面性能也有很大改善,一般而言,HLPHLP比malloc/free快3~130倍,页面错误比malloc/free低7%~37%。

论文目录

  • 摘要
  • ABSTRACT
  • 第一章 绪论
  • 1.1 研究背景
  • 1.2 论文章节安排
  • 第二章 内存管理研究基础
  • 2.1 操作系统的内存管理
  • 2.1.1 Windows内存管理
  • 2.1.2 Linux内存管理
  • 2.2 内存管理常出现的问题
  • 2.3 内存管理理论
  • 2.4 内存管理算法
  • 2.5 小结
  • 第三章 HLP的设计
  • 3.1 设计要求和分析
  • 3.2 架构设计
  • 3.2.1 传统分配器架构
  • 3.2.2 HLP的架构
  • 3.3 用户接口
  • 3.4 辅助组件
  • 3.5 三层设计
  • 3.5.1 第一层
  • 3.5.2 第二层
  • 3.5.3 第三层
  • 3.6 虚拟内存管理器接口
  • 3.7 小结
  • 第四章 HLP的实现
  • 4.1 算法
  • 4.2 各层实现
  • 4.2.1 第一层
  • 4.2.2 第二层
  • 4.2.3 第三层
  • 4.3 其他实现
  • 4.3.1 用户接口
  • 4.3.2 对齐堆
  • 4.3.3 多线程安全
  • 4.3.4 门槛堆
  • 4.4 小结
  • 第五章 HLP的应用
  • 5.1 HLP在C语言中的应用
  • 5.2 HLP在C++语言中的应用
  • 5.3 小结
  • 第六章 HLP的测试
  • 6.1 速度测试
  • 6.1.1 时间
  • 6.1.2 内存分配速率
  • 6.2 碎片
  • 6.2.1 峰值内存占用
  • 6.2.2 碎片率
  • 6.3 页面错误
  • 6.4 小结
  • 第七章 总结与展望
  • 7.1 工作总结
  • 7.1.1 论文主要工作
  • 7.1.2 工作中的不足
  • 7.2 未来工作
  • 参考文献
  • 致谢
  • 相关论文文献

    • [1].基于C++自定义内存分配器的实现[J]. 电脑编程技巧与维护 2017(11)
    • [2].C++语言内存分配研究[J]. 计算机时代 2014(05)
    • [3].C语言内存分配模型的研究[J]. 信息与电脑(理论版) 2014(12)
    • [4].一种嵌入式应用的内存分配算法[J]. 电子技术与软件工程 2019(05)
    • [5].嵌入式系统中池式内存分配方法的分析[J]. 计算机与数字工程 2008(02)
    • [6].基于预测原理的嵌入式内存分配算法设计[J]. 计算机工程与设计 2014(09)
    • [7].JAVA语言内存分配的探讨[J]. 凯里学院学报 2009(06)
    • [8].基于嵌入式系统的e_slab研究与实现[J]. 微型机与应用 2012(12)
    • [9].谈oracle9i内存分配[J]. 中国新技术新产品 2009(15)
    • [10].Java虚拟机内存分配探析[J]. 软件导刊 2010(07)
    • [11].WebitOS内存管理策略的优化[J]. 辽东学院学报(自然科学版) 2009(02)
    • [12].Linux系统下内存分配原理的研究[J]. 连云港职业技术学院学报 2010(04)
    • [13].Java中堆与栈的内存分配[J]. 电脑学习 2010(06)
    • [14].Java内存分配模式的研究[J]. 科技信息 2012(35)
    • [15].改进的Spark Shuffle内存分配算法[J]. 计算机应用 2017(12)
    • [16].应用软件的内存性能瓶颈分析方法研究[J]. 甘肃科技 2018(02)
    • [17].基于嵌入式DOUG LEA内存分配的LZW解码实现与优化[J]. 福建电脑 2009(08)
    • [18].多核平台的并行实时调度与内存分配算法[J]. 东北大学学报(自然科学版) 2012(03)
    • [19].KVM的优化及其具体实现[J]. 西南科技大学学报 2010(01)
    • [20].嵌入式系统的一种快速内存访问对象池算法[J]. 西安邮电学院学报 2010(03)
    • [21].Java内存模型描述及变量运用分析[J]. 现代信息科技 2019(04)
    • [22].基于海思平台的AHD系统内存优化方案[J]. 信息技术 2016(09)
    • [23].基于多级缓存的内存管理方案[J]. 杭州电子科技大学学报 2011(05)
    • [24].μC/OS-Ⅱ动态内存管理的改进与实现[J]. 电脑知识与技术 2009(02)
    • [25].链表结点的内存分配连续性问题研究[J]. 福建电脑 2015(03)
    • [26].以培养创新型IT人才为目标的案例教学模式[J]. 计算机教育 2012(14)
    • [27].Java内存模型分析与其在编程中的应用[J]. 福建电脑 2018(10)
    • [28].NUMA架构内多个节点间访存延时平衡的内存分配策略[J]. 计算机学报 2017(09)
    • [29].一种新型嵌入式动态内存分配算法[J]. 计算机应用 2017(S2)
    • [30].基于嵌入式系统内存分配方式及策略研究[J]. 民营科技 2011(03)

    标签:;  ;  ;  

    一个内存分配器的设计和实现
    下载Doc文档

    猜你喜欢