嵌入式实时操作系统μC/OS-||原理及应用学习6----动态内存管理
来源:互联网 发布:张龙java视频下载 编辑:程序博客网 时间:2024/05/18 09:15
1.μC/OS-||对内存进行两级管理,即把一个连续的内存空间分为若干个分区,每个分区又分为若干个大小相等的内存块。操作系统以分区为单位来管理动态内存,而任务以内存块为单位来获得和释放动态内存。内存分区及内存块的使用情况则由内存控制块来记录。
可动态分配内存的划分
2.内存块:以此为单位向应用程序提供动态内存。
3.内存分区:大小相等的多个内存块组成内存分区,是对系统进行内存管理的基本单位。
4.内存分区及内存块的定义:
INT16U IntMemBuf[10][10];//定义有十个内存块,每个内存块长度为0的内存分区。
5.内存控制块OS_MEM的结构(管理内存分区):记录和跟踪每个内存分区的状态。
内存控制块结构:typedef struct{ void *OSMemAddr;//内存分区的指针 void *OSMemFreeList;//内存控制块链表指针 INT32U OSMemBlkSize;//内存块的长度--长度 INT32U OSMemNBlks;//分区内内存块的数目--总数目 INT32U OSMemNFree;//分区内当前可分配的内存块的数目--未被分配的数目}OS_MEM;
6.内存控制块、内存分区和内存块的关系:,内存控制块的内存分区指针OSMemAddr指向了内存分区,内存分区中的各个内存块又组成了一个单向链表,内存控制块的链表指针OSMemFreeList就指向了这个单向链表的头。
动态内存的管理
7.创建动态内存分区函数:OSMemCreate()。分区的内存块至少要有两块;每个内存块的空间至少能存放一个指针,因为要建立一个用于链表连接的指针。
8.请求一个内存块:OSMemGet()。返回所请求的内存块指针。应事先知道该分区中内存块的大小,并且在使用时不能超过该内存块的长度。
9.释放一个内存块:OSMemPut()。一定要确保把内存块释放到它原来所属的内存分区中。
10.查询一个内存分区的状态:OSMemQuery()。
- 嵌入式实时操作系统μC/OS-||原理及应用学习6----动态内存管理
- 嵌入式实时操作系统μC/OS-||原理及应用学习1
- 嵌入式实时操作系统μC/OS-||原理及应用学习2---任务
- 嵌入式实时操作系统μC/OS-||原理及应用学习4----任务的同步与通信
- 嵌入式实时操作系统μC/OS-||原理及应用学习5----信号量集
- 嵌入式实时操作系统μC/OS-||原理及应用学习3----μC/OS-||的中断和时钟
- 《嵌入式实时操作系统μC/OS-II原理及应用(第2版)》目录
- 嵌入式实时操作系统μC/OS-II原理及应用(1)
- 嵌入式实时操作系统uc/os-ii 原理及应用 读书笔记
- 嵌入式实时操作系统μC/OS-II及其应用
- μC/OS-II实时操作系统内存管理的改进
- [uC/OS-II原理及应用]嵌入式实时操作系统的基本概念
- [UC/OS-II原理及应用]动态内存管理
- [UC/OS-II原理及应用]动态内存管理
- 《嵌入式实时操作系统µC/OS-II》学习笔记(一)
- 《嵌入式实时操作系统µC/OS-II》学习笔记(二)
- 嵌入式实时操作系统μC/OS-Ⅱ读书笔记(1)
- 基于MSP430F5529的μc/os嵌入式实时操作系统移植
- Hibernate 对象状态
- 通过RC4加密解密数据
- AS3 高级动画教程学习之:寻路(A*算法)
- STM32F4之FPU性能的充分发挥-设置要点
- python 提高效率的几个小技巧
- 嵌入式实时操作系统μC/OS-||原理及应用学习6----动态内存管理
- 专用服务器模式和共享服务模式之间的转换
- 互联网协议入门(二)
- 孙鑫MFC笔记之十五--进程间通信
- Java中Cookie的用法
- C#编写植物大战僵尸外挂
- php实现敏感词过滤
- 6月第四周:又是一年奥运季,老将迟暮新人继
- tomcat与JBPM4包冲突