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

先来图哈。

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);elsenext = 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));elsePRINT_MSG("sentinel, ");if ((b->size & BLOCK_STATE) == FREE_BLOCK)PRINT_MSG("free [%p, %p], ", b->ptr.free_ptr.prev, b->ptr.free_ptr.next);elsePRINT_MSG("used,");if ((b->size & PREV_STATE) == PREV_FREE)PRINT_MSG("prev. free [%p])\n", b->prev_hdr);elsePRINT_MSG("prev used)\n ");
}

最后,移植成功,代码完成。实现了动态内存管理算法的改进与实现。

由于,我用的代码是基于时间片轮转调度的,所以下部分我会分析下时间片轮转调度的情况。

下面附上下载链接地址哈。

TLSF算法下载地址:点击打开链接
uc/os基于时间片轮转调度的源码:http://download.csdn.net/detail/pushy_palace/8303581

参考文献:

1.TLSF动态内存分配算法的研究与应用;

2.基于μCOS-II的TLSF动态内存分配算法的应用与仿真;

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

  1. UART0串口编程(四):UART0串口编程之在UC/OS—II中遭遇的危机

    UART0串口编程之在UC/OS-II中遭遇的危机 一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来 ...

  2. Lab 6:uC/OS II

    为什么80%的码农都做不了架构师?>>>    目标: 移植uC/OS II到RPi上,实现两个任务的调度.这两个任务能轮流点亮LED,并通过串口发送消息表明自己正在运行 具体步骤: ...

  3. uc/OS II——多任务设计

    uc/OS II--多任务设计 (1)设计 开始任务 [1]/声明 开始任务 任务块 static OS_STK App_TaskStartStk[APP_TASK_START_STK_SIZE]; ...

  4. python内存池_python内存监控工具memory_profiler和guppy的用法详解

    python内存监控工具memory_profiler和guppy的用法详解 发布时间:2020-08-21 19:44:58 来源:脚本之家 阅读:123 python2.7在内存管理上相比pyth ...

  5. python 内存分析工具_python内存监控工具memory_profiler和guppy的用法详解

    python2.7在内存管理上相比python3还是有些坑的,其释放后的内存仍然保留在python的内存池中,不被系统所用.python循环引用的变量不会被回收,这会导致程序越运行,占用的内存越大.我 ...

  6. linux串口互斥,UART0串口编程之在UC/OS—II中遭遇的危机

    一.潜在的危机 1.在uc/os操作系统中设计串口编程时,由于ISR和多个任务并发执行,情况比较复杂.尤其是接收状态为被动状态时,只能靠串行口中断来接收数据. 2.在进行串行通信时,双方遵循相同的通信 ...

  7. Android内存优化(六)LeakCanary使用详解

    相关文章 Android性能优化系列 Java虚拟机系列 1.概述 如果使用MAT来分析内存问题,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比. 为了能够简单迅速的 ...

  8. 【嵌入式系统—实时操作系统】uC/OS II源码的官网下载

    要下载源码为:STM32F107-uC/OS-II源码包 Micrium官网的下载地址:Micrium_uC-Eval-STM32F107_uCOS-II 怎么找? 到官网的产品专区目录入口查找STM ...

  9. 【 uC/OS II 】uC/OS II 源代码阅读(os_task.c)任务管理

    前言 这个任务管理源代码,是整个系统最核心的部分,也是最难的部分,多看几遍吧.其中的核心结构体是: typedef struct os_tcb {OS_STK *OSTCBStkPtr; /* Poi ...

  10. uc os ii与linux,uC/OS-II嵌入式实时操作系统的几大特点

    uC/OS-II嵌入式实时操作系统的几大特点 出处:网络 发布于:2018-09-12 14:46:03 uC/OS-II的特点 1.uC/OS-II是由Labrosse先生编写的一个开放式内核,主要 ...

最新文章

  1. 三十六亿的《哪吒》历时五年,如何用AI解决动画创作难题?
  2. mysql declare与set的区别_浅谈MySQL存储过程中declare和set定义变量的区别
  3. 关闭/开启 ubuntu 自动更新提示
  4. SAP CRM HANA report模型的数据库存储表
  5. FireFox中国管理者的脑袋被驴踢了。
  6. 【NLP入门】通俗讲解Subword Models
  7. ActiveMQ下载与安装(Linux环境下进行)
  8. Linux Centos date使用心得
  9. DPDK AF_XDP
  10. 电视盒子线刷固件教程B860AV2.1-A-M-T版
  11. 阿里云DataV—多字段取满足某一个字段的行,多字段取不满足某一个字段的行(3)
  12. input输入框对伪类(after,before)支持情况
  13. 4.2 期货每日早盘操作建议
  14. CSS3之好看的特效
  15. 题目分析参考贺老师的答案————谁是小偷如何派任务
  16. 《图解HTTP》--返回结果的HTTP状态码
  17. 微信小程序支付以及退款功能(超详细)
  18. plsql tables 里面不显示表格
  19. 华为设备BGP基本配置
  20. 汽车以太网测试之UpperTester

热门文章

  1. html5在线表格生成器,js简单实现自动生成表格功能示例
  2. java ssm基于springboot的设备巡检系统
  3. linux安装taskctl乱码,TASKCTL常见问题和解决方法(FAQ)
  4. 穿越计算机的迷雾--读书笔记三
  5. java架构师证书_java架构师证书怎么考?做架构师有什么要求?
  6. 创业公司专题数据(包含stata多种模型代码)
  7. linux系统新磁盘可视化挂载方法
  8. 【unity3d游戏源码及软件】部分展示之:超级马里奥unity源码,内附更多源码
  9. 测试工具ApiPost和Postman及Apifox
  10. graphpad 安装 hello world