首页|嵌入式系统|显示技术|模拟IC/电源|元件与制造|其他IC/制程|消费类电子|无线/通信|汽车电子|工业控制|医疗电子|测试测量
首页 > 分享下载 > 常用文档 > 内存管理与内存控制

内存管理与内存控制

资料介绍
内存管理与内存控制


第7章 内存管理 1

7.0 内存控制块 1
7.1 建立一个内存分区,OSMemCreate() 3
7.2 分配一个内存块,OSMemGet() 6
7.3 释放一个内存块,OSMemPut() 7
7.4 查询一个内存分区的状态,OSMemQuery() 8
7.5 Using Memory Partitions 9
7.6 等待一个内存块 11
内存管理

我们知道,在ANSI
C中可以用malloc()和free()两个函数动态地分配内存和释放内存。但是,在嵌入式实时
操作系统中,多次这样做会把原来很大的一块连续内存区域,逐渐地分割成许多非常小
而且彼此又不相邻的内存区域,也就是内存碎片。由于这些碎片的大量存在,使得程序
到后来连非常小的内存也分配不到。在4.02节的任务堆栈中,我们讲到过用malloc()函
数来分配堆栈时,曾经讨论过内存碎片的问题。另外,由于内存管理算法的原因,mall
oc()和free()函数执行时间是不确定的。
在µC/OS-
II中,操作系统把连续的大块内存按分区来管理。每个分区中包含有整数个大小相同的
内存块,如同图F7.1。利用这种机制,µC/OS-II
对malloc()和free()函数进行了改进,使得它们可以分配和释放固定大小的内存块。这
样一来,malloc()和free()函数的执行时间也是固定的了。
如图
F7.2,在一个系统中可以有多个内存分区。这样,用户的应用程序就可以从不同的内存
分区中得到不同大小的内存块。但是,特定的内存块在释放时必须重新放回它以前所属
于的内存分区。显然,采用这样的内存管
内存管理与内存控制
本地下载

评论