首页 > 代码库 > 如何手动实现malloc和free

如何手动实现malloc和free

我一直非常关注Linux系统中的内存管理,想了解这一机制的工作过程,断断续续看了几年书,觉得有时候有收获,但是过一段时间就忘记了,让人觉得这个子系统很庞大,无从下手。最近看了很多书,对以malloc为切入点的linux内存管理有了一定的认识,在这里首先将需要的参考资料列出来,稍后手动实现的时候再补上。主要的参考资料有:

《深入理解Linux内核》:关于X86的Linux的段页式存储机制(第二章内存寻址)、内存管理(第八章)和Linux的进程空间地址(第九章)

《深入理解计算机系统》:关于x86CPU的分层管理,从tlb、L1 cache到存储器映射(第九章虚拟存储器)

《数据结构》:第八章动态内存管理,可以以此为参考,手动实现。其中非常重要的几个概念,比如边界标识法是现在Linux系统采用的ptmalloc库的重要实现方式

《Glibc内存管理》:淘宝华庭的关于ptmalloc的源码级分析。

以上四个参考资料,前两个是作为基础知识来掌握的,尤其是起码要知道段页式和虚拟存储器机制,和brk等系统调用(用以实现malloc的功能),后两个尤其是第三个是要在前两个的基础上开始手动实现这样一个有分配、回收功能的库。