手写RTOS内核
内存管理模块实战
📚
30章 · 从零到集成
01
内存管理概述
为什么需要内存管理?RTOS中挑战与目标
02
静态内存分配
全局变量与静态数组,优缺点,适用场景
03
动态内存分配
malloc/free引入,堆空间,RTOS动态需求
04
内存碎片问题
内部碎片与外部碎片,根本原因,系统影响
05
固定大小内存块设计
思想来源,内存池雏形,块大小确定
06
内存池核心数据结构
空闲链表设计,控制块定义
07
内存池初始化
创建函数,划分块,初始化空闲链表
08
内存分配函数(Alloc)
从空闲链表取块,返回用户,失败处理
09
内存释放函数(Free)
归还块到空闲链表,空指针/重复释放
10
内存池的线程安全
关中断保护,互斥锁,性能权衡
11
多尺寸内存池设计
为什么需要多种尺寸?如何组织多个池
12
伙伴算法(Buddy System)原理
内存对半分,合并相邻空闲块
13
伙伴算法数据结构
位图与链表结合,快速找到伙伴块
14
伙伴算法分配实现
查找合适块,分裂过程,更新位图
15
伙伴算法释放实现
检查伙伴空闲,合并过程,递归合并
16
SLAB分配器思想
对象缓存,着色技术,减少Cache Miss
17
SLAB分配器数据结构
Slab、Cache、对象描述符,三级结构
18
SLAB分配器分配流程
从Partial链表取对象,从Empty创建新Slab
19
SLAB分配器释放流程
对象归还,Slab状态迁移(Full→Partial→Empty)
20
内存对齐与边界标记
对齐要求,头部标记,尾部标记
21
内存泄漏检测
统计分配/释放次数,记录调用栈,打印报告
22
内存越界检测
Canary值,填充模式,释放时校验
23
内存使用率统计
已用内存、最大使用量、碎片率,可视化
24
MMU与MPU
硬件保护,RTOS中MPU配置,特权级
25
堆与栈的划分
任务栈管理,堆栈隔离,栈溢出检测
26
内存管理性能优化
分配延迟优化,批量分配,缓存友好
27
典型RTOS内存管理对比
FreeRTOS heap_1~5, uC/OS-II OSMem, RT-Thread memheap
28
手写内存管理单元测试
框架选择,测试用例(正常、边界、异常)
29
内存管理模块集成
接入RTOS内核,替换标准库malloc/free
30
综合实战:动态任务创建与销毁
基于手写内存管理模块的Demo