首页 > 系统服务 > 详细

linux内核--用户态内存管理

时间:2014-04-06 09:14:07      阅读:667      评论:0      收藏:0      [点我收藏+]

在上一篇博客“内核内存管理”中,描述的内核内存管理的相关算法和数据结构,在这里简单描述用户态内存管理的数据结构和算法。

一,相关结构体

与进程地址空间相关的全部信息都包含在一个叫做“内存描述符”的数据结构mm_struct中,进程描述符的mm字段指向社个结构。

linux通过vm_area_struct的对象实现线性区,每个线性区表示一个线性地址空间。其中重要字段如下:

struct vm_area_struct

{  

...

unsigned long vm_start;//线性区间的第一个线性地址

unsigned long vm_end;//线性区间外的第一个线性地址

struct vm_area_struct * vm_next;//进程拥有的线性区间链表的下一个线性区

struct rb_node vm_rb;//用于红-黑树数据结构

...

}

二,数据结构与算法

1,进程拥有的线性区以链表的形式链接,而且以红黑树的形式排序。红黑树是一种比较平衡的二叉查找树。复杂度为log2N。

2,当插入或删除一个线性区描述符时,内核通过红黑树搜索前后元素,并用搜索结果快速更新链表而不用扫描链表。

算法思想很简单,不再赘述。

linux内核--用户态内存管理,布布扣,bubuko.com

linux内核--用户态内存管理

原文:http://www.cnblogs.com/hxdoit/p/3647879.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!