Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说os是什么_rtthread和ucos哪个好,希望能够帮助你!!!。
这一节主要讲讲运行结果。
先来图哈。
1.先看下print_all_blocks()函数
它是在debug函数里面的,想要用这个函数的话,在定义里将_TLSF_DEBUG置为1;
void print_all_blocks(tlsf_t * tlsf)
{
area_info_t *ai;
bhdr_t *next;
PRINT_MSG("\nTLSF at %p\nALL BLOCKS\n\n", tlsf);
ai = tlsf->area_head;
while (ai) {
next = (bhdr_t *)((char *)ai - BHDR_OVERHEAD);
while (next) {
print_block(next);
if ((next->size & BLOCK_SIZE))
next = GET_NEXT_BLOCK(next->ptr.buffer, next->size & BLOCK_SIZE);
else
next = NULL;
}
ai = ai->next;
}
}
其他不懂得地方需要看一下声明了。
void print_block(bhdr_t * b)
{
if (!b)
return;
PRINT_MSG(">> [%p] (", b);
if ((b->size & BLOCK_SIZE))
PRINT_MSG("%lu bytes, ", (unsigned long)(b->size & BLOCK_SIZE));
else
PRINT_MSG("sentinel, ");
if ((b->size & BLOCK_STATE) == FREE_BLOCK)
PRINT_MSG("free [%p, %p], ", b->ptr.free_ptr.prev, b->ptr.free_ptr.next);
else
PRINT_MSG("used,");
if ((b->size & PREV_STATE) == PREV_FREE)
PRINT_MSG("prev. free [%p])\n", b->prev_hdr);
else
PRINT_MSG("prev used)\n ");
}
最后,移植成功,代码完成。实现了动态内存管理算法的改进与实现。
由于,我用的代码是基于时间片轮转调度的,所以下部分我会分析下时间片轮转调度的情况。
下面附上下载链接地址哈。
TLSF算法下载地址:点击打开链接
uc/os基于时间片轮转调度的源码:http://download.csdn.net/detail/pushy_palace/8303581
参考文献:
1.TLSF动态内存分配算法的研究与应用;
2.基于μCOS-II的TLSF动态内存分配算法的应用与仿真;
今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。
上一篇
已是最后文章
下一篇
已是最新文章