CMA是通过cma_alloc分配的。cma_alloc() --> alloc_contig_range(..., MIGRATE_CMA,...),向刚才释放给buddy system的MIGRATE_CMA类型页面,重新“收集”过来。

linux_mainline-5.17.0/mm/cma.c416  /**
417   * cma_alloc() - allocate pages from contiguous area
418   * @cma:   Contiguous memory region for which the allocation is performed.
419   * @count: Requested number of pages.
420   * @align: Requested alignment of pages (in PAGE_SIZE order).
421   * @no_warn: Avoid printing message about failed allocation
422   *
423   * This function allocates part of contiguous memory on specific
424   * contiguous memory area.
425   */
426  struct page *cma_alloc(struct cma *cma, unsigned long count,
427                unsigned int align, bool no_warn)
428  {
429     unsigned long mask, offset;
430     unsigned long pfn = -1;
431     unsigned long start = 0;
432     unsigned long bitmap_maxno, bitmap_no, bitmap_count;
433     unsigned long i;
434     struct page *page = N

Linux内存从0到1学习笔记(8.5,CMA内存分配)相关推荐

  1. Linux内存从0到1学习笔记(9.1,内存优化调试之kswapd0触发原理)

    写在前面 Linux内核中有一个非常重要的内核线程kswapd,它负责在内存不足时回收页面.kswapd内核线程初始化时会为系统中每个内存结点创建一个名为"kswapd%"内核线程 ...

  2. Linux内存从0到1学习笔记(4,TLB)

    一.TLB简介 Kernel初始化的时候,会在初始化内存中创建页表:而处理器读取指令和数据的时候需要首先通过MMU查表得到物理地址,然后在访问物理地址读取指令或数据.MMU查表过程汇中需要4次访问内存 ...

  3. Linux内存从0到1学习笔记(11.2 内存优化方案之内存压缩zram)

    写在前面 zram是Linux内核提供的一种虚拟内存压缩功能,通过在将一部分内存模拟成块设备,并将压缩后的内存写到这部分模拟的块设备中,直到必须使用硬盘上的交换空间,zram 本质是就是一个块设备. ...

  4. Linux内存从0到1学习笔记(6.7,物理内存初始化之CMA初始化)

    写在前面 CMA (contiguous memory allocator)连续内存分配器,被开发用于分配大的.物理连续的内存块,其底层还是依赖内核伙伴系统这样的内存管理机制.通过这套机制,在设备驱动 ...

  5. Linux内存从0到1学习笔记(6.6,物理内存初始化之预留内存)

    写在前面 前面的章节中有提到过,memblock分配器会将内存划分为动态管理的内存(保存在memblock的memory type的数组)和静态预留的内存(保存在memblock的reserved t ...

  6. Linux与C++11多线程编程(学习笔记)

    多线程编程与资源同步 在Windows下,主线程退出后,子线程也会被关闭; 在Linux下,主线程退出后,系统不会关闭子线程,这样就产生了僵尸进程 3.2.1创建线程 Linux 线程的创建 #inc ...

  7. 【C#8.0 and .NET Core 3.0 高级编程学习笔记】

    @C#8.0 and .NET Core 3.0 高级编程学习笔记 前言 为了能精细地完成对C#语言的学习,我决定选择一本书,精读它,理解它,记录它.我想选择什么书并不是最重要的,最重要的是持之以恒的 ...

  8. JVM学习笔记(四)------内存调优

    首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存,这个数值不能准确的反应堆内存的真实占用情况,因为GC过后这个值是不会变化的,因此内存调优的时候要更多地使用JDK提 ...

  9. 2017-2-15从0开始前端学习笔记(HTML)-图片-表格-表单

    2017-2-15从0开始前端学习笔记-图片-表格-表单 标签 图片 图片<img src="#" alt="文本说明 不能加载图片时显示" title= ...

最新文章

  1. Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
  2. 【Win32汇编】数组累加
  3. Javascript 本地图片预览
  4. java ejb jsp 架构_JavaEE架构
  5. HVV之WIFI蜜罐反制红队
  6. php 5.4.5,PHP 5.4.5 公布
  7. T-SQL查询高级--理解SQL SERVER中非聚集索引的覆盖,连接,交叉和过滤
  8. 【Unity】12.2 导航网格寻路简单示例
  9. 2020年中考英语计算机考试,2020年中考英语听说测试考生问答
  10. 555-大数据查重-位图算法
  11. scss 转换成css,如何将scss转换为css
  12. matlab通信系统仿真设计课程设计,基于matlab的FM通信系统仿真设计与实现_课程设计报告...
  13. linux离线软件包下载,Linux离线安装Docker
  14. 铁电存储器F-RAM
  15. windowsXP日常应用技巧及经验总结(转载)【实用】
  16. 快嘴阿里旺旺超强营销王 2007 绿色
  17. 【文末福利】半导体封装率先国产化,400+封装厂商最新名单汇总
  18. java automapper 使用_AutoMapper实际项目运用
  19. 【Pygame小游戏】炸裂全场、超级炸弹人“爆炸”登场,这是你的童年嘛?
  20. 正则表达式是如何让你的网页卡住的

热门文章

  1. python苹果版本下载_python for mac 2.7 下载
  2. 如何使用风向偏移简化风速风向传感器安装
  3. vim注释的颜色修改 终端配色设定 vim自动跳转 大小写不敏感
  4. python实现因子分析
  5. 杰理之调节数字音量不起作用以及调节数字音量影响混响效果的解决办法【篇】
  6. unity3d webplayer打开新窗口
  7. 常用软件系列之快速搜索软件--光速搜索
  8. 2015华为Word Maze 是一个网络小游戏,你需要找到以字母标注的食物
  9. Xplus:电子杂志的颠覆性未来
  10. 信息管理与信息系统专业 -从事SAP的ERP ABAP程序员前景