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

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

  • 相关阅读:
    几种网络LeNet、VGG Net、ResNet原理及PyTorch实现
    学习Faster R-CNN代码faster_rcnn(八)
    应用安全
    应用安全
    应用安全
    应用安全
    应用安全
    渗透测试
    应用安全
    应用安全
  • 原文地址:https://www.cnblogs.com/hxdoit/p/3647879.html
Copyright © 2011-2022 走看看