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

这一节主要讲讲运行结果。

先来图哈。


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动态内存分配算法的应用与仿真;



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈渣渣&

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值