uC/OS-II的内存管理
应用程序在运行中为了某种特殊需要,经常需要获得一些内存空间,因此作为一个完善的操作系统,必须具有动态分配内存的能力。对于实时操作来说,还应保证系统在动态内存分配时,它的执行时间是可确定的。
uC/OS-II对内存进行两级管理:把一片连续的内存空间分成了若干个分区;每个分区又分成了若干个大小相等的内存块。分区是操作系统的管理单位,而内存快时分配单位。内存分区及内存块的使用情况则由一个叫做内存控制块的表来记录。
如果应用程序要使用动态内存,则首先要在内存中划分出可进行动态分配的区域,这个划分出来的区域叫做内存分区。每个分区又要分为若干个叫做内存块的小区。uC/OS-II规定:同处一个分区的内存块的大小必须相等,而且同一个分区内存块的数据类型必须相同。为了使系统能够感知和有效地管理内存分区,uC/OS-II给每个内存分区定义一个叫内存控制块(OS_MEM)的数据结构。
#if OS_MEM_EN && (OS_MAX_MEM_PART >= 2)
typedef struct { /* MEMORY CONTROL BLOCK