您的位置:首页 > 其它

uc/os-II的内存改进与实现TLSF算法的详解,移植实现(四)

2014-12-26 15:08 453 查看
这一节主要讲讲运行结果。

先来图哈。



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动态内存分配算法的应用与仿真;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: