zoukankan      html  css  js  c++  java
  • linux内核--用户态内存管理

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

    一,相关结构体

    与进程地址空间相关的全部信息都包含在一个叫做“内存描述符”的数据结构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,当插入或删除一个线性区描述符时,内核通过红黑树搜索前后元素,并用搜索结果快速更新链表而不用扫描链表。

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

  • 相关阅读:
    优达,计算机科学导论
    关于未来发展阶段小结
    CS50.5
    CS50.4
    简单查看tomcat中部署java服务的内存使用情况
    python3环境搭建(CentOS7.2)
    mysql主从配置脚本
    安装rkhunter
    转移到博客园啦!
    Eclipse上Maven环境配置使用 (全)
  • 原文地址:https://www.cnblogs.com/hxdoit/p/3647879.html
Copyright © 2011-2022 走看看