单片机
返回首页

OK6410A 开发板 (八) 38 linux-5.11 OK6410A 为什么需要这么多内存管理器

2022-09-07 来源:csdn

最后 用 memblock 不行吗?

跳过 memblock 直接设置 buddy 不行吗

memblock 和 buddy 的区别


为什么 是 buddy 是 内存管理器 以及 其他管理器的基础


为什么 buddy 建立了还要 建立 slab 和 vmalloc ?


这几个内存管理器的特点是什么???


第三阶段的消费者

第三阶段建立的是 buddy


alloc_pages 申请到的都是 物理内存 连续的 页

物理地址连续,虚拟地址肯定连续


但至少一个页及以上


问题:

1.buddy提供的api 最少可以申请的内存大小是一个页,不能再小

2.alloc_pages 如果申请2个及以上的页,只有 当 存在物理内存连续的2个页时,才能正确返回;否则,返回 0


第四阶段的消费者


用于解决 buddy 第1个问题

解决方案:

将 buddy 看成 内存批发的 大代理商(buddy内存分配器),构建一个小代理商(slab内存分配器)


slba 从 buddy 批发内存,然后将 内存分成 更小的块(A)(小于1页) ,并进行管理


用户 从 slab  批发 A


其他:

因为没有解决第二个问题,只要申请成功(不管多大),肯定是下面的状态:

物理地址是连续的,虚拟地址是连续的


第五阶段的消费者


用于解决 buddy 第2个问题

解决方案:

不是在buddy基础上建立一个分配器

而是封装一层


这多的一层主要是 使用 页表 将 不连续的物理内存 映射到 虚拟内核地址空间 中,使之看起来是连续的.


进入单片机查看更多内容>>
相关视频
  • RISC-V嵌入式系统开发

  • SOC系统级芯片设计实验

  • 云龙51单片机实训视频教程(王云,字幕版)

  • 2022 Digi-Key KOL 系列: 你见过1GHz主频的单片机吗?Teensy 4.1开发板介绍

  • TI 新一代 C2000™ 微控制器:全方位助力伺服及马达驱动应用

  • MSP430电容触摸技术 - 防水Demo演示

精选电路图
  • 用数字电路CD4069制作的万能遥控轻触开关

  • 红外线探测报警器

  • 短波AM发射器电路设计图

  • RS-485基础知识:处理空闲总线条件的两种常见方法

  • 带有短路保护系统的5V直流稳压电源电路图

  • 基于ICL296的大电流开关稳压器电源电路

    相关电子头条文章