Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2741765
  • 博文数量: 79
  • 博客积分: 30130
  • 博客等级: 大将
  • 技术积分: 2608
  • 用 户 组: 普通用户
  • 注册时间: 2007-10-22 14:58
个人简介

博所搬至http://xiaogr.com

文章存档

2015年(2)

2009年(3)

2008年(56)

2007年(18)

分类: LINUX

2008-01-07 18:06:13

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

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

chinaunix网友2010-12-18 20:58:37

图没有。。。。。。

chinaunix网友2010-12-18 20:58:37

图没有。。。。。。

chinaunix网友2010-12-18 20:58:37

图没有。。。。。。