博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

Linux内核学习

戒骄,戒躁,静心,静气......
ericxiao.cublog.cn


Uclibc中的malloc机制分析(-)

Uclibc是嵌入式linux系统里面使用最多的c lib库。最近在学习linux内核内存管理方面的东西,学完之后一直对用户空间的内存管理很迷糊,特找了libc中的malloc部份代码研究了一下,小有心得。特总结成此文。

本文档结构:

一:准备知识

二:堆空间的管理结构

三:堆空间的初始化

四:FA结构的操作

五:malloc的实现

六:free的实现

七:总结

一: 准备知识:

     用户空间中,经常会调用malloc free进行内存管理,它是在进程的堆空间中分配内存。如下图所示:

    

二:堆空间的管理结构:

     堆空间表示的数据结构

     struct heap

{

     //堆空间空闲区的表示结构

          struct heap_free_area *free_areas;

         //用于在多线程环境中加锁保护

#ifdef HEAP_USE_LOCKING

     pthread_mutex_t lock;

#endif

};

heap_free_area结构在代码被代码作者称之为FA结构。它的定义如下:

struct heap_free_area

{

     //空闲区的大小

     size_t size;

     //用于构造循环链表

     struct heap_free_area *next, *prev;

};

注意:在FA结构里并没有定义指向空闲区的指针,这是因为FA结构正好放在空闲区的后面。堆栈区空间结构如下所示:

发表于: 2008-01-07 ,修改于: 2008-01-07 18:06,已浏览566次,有评论0条 推荐 投诉


网友评论

发表评论