内存碎片化(Memory Fragmentation)

描述HRTOS动态内存分配过程中由于分配与释放不均导致的内存碎片问题。

机制定义

内存碎片 = 外部碎片 + 内部碎片

产生过程

1. 任务动态申请不同大小内存
2. 不规则释放形成空洞
3. 连续空间被切割
4. 大块内存无法满足申请

碎片类型扩展

外部碎片

空闲内存被切割成不连续的小块,无法满足大块申请。

内部碎片

分配块大于实际需求,造成空间浪费。

演示代码


#include 

void task_A(void)
{
    void* p1 = os_malloc(64);
    void* p2 = os_malloc(128);

    os_free(p1);   // 释放形成碎片
    os_free(p2);

    void* p3 = os_malloc(96); // 可能无法连续分配
}

void system_init(void)
{
    os_mem_init();
    os_task((unsigned int)task_A, 0, 3, 0);
}

void main(void)
{
    system_init();

    os_task_release(0);

    while(1)
    {
        os_nop();
    }
}
    

系统意义

内存碎片是嵌入式RTOS长期运行稳定性的关键问题,直接影响系统可用性与实时性。

相关机制

资源分配机制

Resource Allocation

栈溢出机制

Stack Overflow

内存模型

Memory Model

相关导航

任务执行模型

Task Execution

调度系统

Scheduling Engine

中断机制

Interrupt Flow

任务生命周期

Task Lifecycle