zoukankan      html  css  js  c++  java
  • 内存管理

      该结构与物理页相关,并非与虚拟页相关,该结构对页的描述是短暂的,即时包含的数据继续存在,因为交换等原因,他们并不可能和同一page相关。内核用这个数据结构仅仅描述当前时刻相关的物理页中存在的东西,这种数据结构的目的在于描述物理内存本身,而不是其中的数据。

    kmalloc

      以字节为单位获得一块内核内存的大小

    void *kmalloc(size_t size, int flags);

    分配器标志:

    1. 行为修饰:特定情况下特定方法分配内存;如中断分配时要求程序不能睡眠
    2. 区修饰:到哪里去获取内存页
    3. 类型标志:组合行为修饰和区修饰

    vmalloc

      在获得大块内存时:模块被动态插入内核

    void *vmalloc(unsigned long size);

      分配的虚拟地址连续,物理地址无需连续;kmalloc保证物理地址也是连续的

      vmalloc把物理上不连续的页转为虚拟连续的必须建立页表,必须一个一个的映射,导致比内存映射抖动大得多

    slab分配器

      不同的对象划分为高速缓存组,每种对象(struct_task、struct inode)对应一个高速缓存。kmalloc建立在slab上。高速缓存又被划分为slab;一般情况slab仅仅有一页组成。每个高速缓存可以由多个slab组成。

    栈上的静态分配

      每个进程有自己的内核栈、中断栈。如果内核栈溢出,则会覆盖栈末端的thread_info结构中的数据

  • 相关阅读:
    OpenGL------光照+染色
    sicily 1345 能量项链
    sicily 1193 Up the Stairs
    sicily 1172 Queens, Knights and Pawns
    sicily 1206 Stacking Cylinders
    模拟退火算法解tsp问题
    js对象的属性可以是一个变量
    vue中/deep/的使用
    MySQL中DATEDIFF函数使用
    js中的this
  • 原文地址:https://www.cnblogs.com/tianzeng/p/14019593.html
Copyright © 2011-2022 走看看