第六步:实现简单的内存管理
到目前为止,Os86tiny的线程管理系统最多只支持4个线程。这个限制是由于堆栈池ThreadStacks是在编译时间定义的一个有4个元素的数组,而不是一个动态分配的缓冲区引起的。
如果要支持一个个数不受限制的线程管理系统,就需要使用动态分配的堆栈池。而要使用动态分配的堆栈池,首先要为系统实现动态内存分配的功能。
这一步的例子主要是演示如何实现一个基于内存控制块(Memory Control Block, MCB)的内存管理功能。
内存管理函数malloc和free实现在memmgr.c文件中。在调用这两个函数之前,需要调用MemHeap_Init函数初始化整个系统堆。