Chinaunix首页 | 论坛 | 博客
  • 博客访问: 134414
  • 博文数量: 79
  • 博客积分: 30
  • 博客等级: 民兵
  • 技术积分: 435
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-16 19:55
文章分类
文章存档

2015年(1)

2013年(1)

2012年(9)

2011年(68)

我的朋友

分类:

2011-12-16 20:43:21

原文地址:Uclibc中的malloc机制分析(-) 作者:xgr180

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结构正好放在空闲区的后面。堆栈区空间结构如下所示:

阅读(1005) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~