os是什么_rtthread和ucos哪个好

(1) 2024-05-24 11:12

Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说os是什么_rtthread和ucos哪个好,希望能够帮助你!!!。

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

先来图哈。

os是什么_rtthread和ucos哪个好_https://bianchenghao6.com/blog__第1张

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



今天的分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

上一篇

已是最后文章

下一篇

已是最新文章

发表回复