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

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

  • 相关阅读:
    c# 解决读取Excel混合文本类型,数据读取失败的解决方法
    c#中的常用ToString()方法总结
    vsts
    RSA加密解密
    odbc连接数据库
    SerialPort
    C# Winform下载文件并显示进度条
    c# 面试题
    SQL Server 存储过程
    mysql 事务处理
  • 原文地址:https://www.cnblogs.com/hxdoit/p/3647879.html
Copyright © 2011-2022 走看看