当前位置:   article > 正文

μC/OS-II--内存管理_μc/os中分区和内存块的关系是()。a每个内存块可以分成若干个大小不相等的

μc/os中分区和内存块的关系是()。a每个内存块可以分成若干个大小不相等的

在μC/OS-II中,将大块内存作为一个分区,在系统中有多个分区,每个分区又分为整数个大小相同的内存块,由于大小相同,分配和释放时间相同,应用程序根据需要从不同的分区得到不同的内存块,内存块释放时,放回以前的位置。分区和内存块的关系如下所示:

 

1、内存管理全局变量及相关数据结构

  • 宏定义
  1. #define OS_MEM_EN 0 //是否开启内存管理
  2. #define OS_MEM_NAME_SIZE 16 //内存分区名大小
  3. #define OS_MEM_QUERY_EN 1 //是否允许内存分区信息查询
  4. #define OS_MAX_MEM_PART 5 //最多内存分区数
  • 全局变量
  1. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  2. OS_EXT OS_MEM *OSMemFreeList; //指向下一个可用内存分区
  3. OS_EXT OS_MEM OSMemTbl[OS_MAX_MEM_PART];//内存分区控制块数组
  4. #endif
  • 数据结构

为了跟踪每个内存分区,引入内存控制块OS_MEM进行管理。OSMemAddr为指向该内存分区起始地址的指针,当调用OSMemCreate时初始化,之后不能修改。OSMemFreeList为指向下一个可用内存控制块或下一个空余内存块的指针。OSMemBlkSize在建立该内存分区时建立,表示内存分区中单个内存块的大小。OSMemNBlks表示内存分区中总的内存块数量。OSMemNFree为内存分区中当前空余内存块数量。

为了方便查询内存块信息,引入OS_MEM_DATA结构, 和内存控制块类似,OSAddr表示指向内存分区开始地址,OSFreeList表示指向该分区下一个可用内存块,OSBlkSize表示该分区每个内存块大小,OSNBlks表示该分区总内存块数量,OSNFree表示该分区可用内存块数量,OSNUsed该分区已经使用的内存块数量。

 

  1. /*
  2. *********************************************************************************************************
  3. * MEMORY PARTITION DATA STRUCTURES
  4. *********************************************************************************************************
  5. */
  6. #if (OS_MEM_EN > 0) && (OS_MAX_MEM_PART > 0)
  7. typedef struct os_mem { //内存控制块
  8. void *OSMemAddr; //指向内存分区开始地址
  9. void *OSMemFreeList; //指向该分区下一个可用内存分区
  10. INT32U OSMemBlkSize; //该分区单个内存块大小
  11. INT32U OSMemNBlks; //该分区内存块数量
  12. INT32U OSMemNFree; //该分区剩余可用内存块
  13. #if OS_MEM_NAME_SIZE > 1
  14. INT8U OSMemName[OS_MEM_NAME_SIZE]; //分区名
  15. #endif
  16. } OS_MEM;
  17. typedef struct os_mem_data { //内存分区信息结构体
  18. void *OSAddr; //指向内存分区开始地址
  19. void *OSFreeList; //指向该分区下一个可用内存块
  20. INT32U OSBlkSize; //该分区每个内存块大小
  21. INT32U OSNBlks; //该分区总内存块数量
  22. INT32U OSNFree; //该分区可用内存块数量
  23. INT32U OSNUsed; //该分区已经使用的内存块数量
  24. } OS_MEM_DATA;
  25. #endif
  26. /*$PAGE*/
  27. /*

2、内存块管理初始化

v
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/406411
推荐阅读
相关标签
  

闽ICP备14008679号