2 时间管理和内存管理

原创 2013年12月02日 09:10:53

时间管理

uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的《嵌入式实时操作系统ucos-II》这本书),时间频率取决于用户对硬件系统的定时器编程来实现。中断发生的时间间隔是固定不变的,该中断也成为一个时钟节拍。这里隐含的意思就是你选择的芯片如果想使用UCOS系统,前提条件一定要有一个Timer。   
uC/OS-II要求用户在定时中断的服务程序中,调用系统提供的与时钟节拍相关的系统函数,例如中断级的任务切换函数,系统时间函数。
uCOS时间管理的相关函数
1:任务延迟函数OSTimeDly()
Ucos提供一个可以被任务调用而将任务延时一段特定时间的功能函数,即OSTimeDly().任务调用OSTimeDly()后,一旦规定的时间期满或者有其他的任务通过调用OSTimeDlyResume()取消了延时,他就会进入就绪状态。只有当该任务在所有就绪态任务中具有最高的优先级,它才会立即运行。
2:按时,分,秒延时函数OSRimeDLyHMSM()
与OSTimeDly()一样,调用OSRimeDlyHMSM()函数也会是UCOS进行一次任务调度,并且执行下一个优先级最高的就绪任务。当OSTimeDlyHMSM()后,一旦规定的时间期满,或者有OSTimeDlyResume(),它就会马上处于就绪态。同样,只有当该任务在所有就绪态任务中具有最高的优先级,他才开始运行。
3:恢复延时的任务OSTimeDlyResume()
延时的任务可以不等待延时的期满,而是通过其他任务取消延时而使自己处于就绪态,可以通过该函数来实现,实际上,OSTimeDlyResume()也可以唤醒正在等待的事件。
4:系统时间OSTimeGet()和OSTimeSet()

内存管理

在ANSI C中是使用malloc和free两个函数来动态分配和释放内存。例如在Linux系统中就是这样。但在嵌入式实时系统中,多次这样的操作会导致内存碎片,因为嵌入式系统尤其是uCOS是实地址模式,这种模式在分配任务堆栈时需要整块连续的空间,否则任务无法正确运行。且由于内存管理算法的原因,malloc和free的执行时间也是不确定。这点是实时内核最大的矛盾。


基于以上的原因uC/OS-II中把连续的大块内存按分区管理。每个分区中包含整数个大小相同的内存块,但不同分区之间的内存快大小可以不同。用户需要动态分配内存时,系统选择一个适当的分区,按块来分配内存。释放内存时将该块放回它以前所属的分区,这样能有效解决碎片问题,同时执行时间也是固定的。


同时uCOS-II根据以上的处理封装了适合于自己的动态内存分配函数OSMemGet()和OSMemPut(),但是使用这两个函数动态分配内存前需要先创建内存空间,也就是第二段咱们介绍的内存分块。呵呵,不罗嗦了,具体的关于内存管理的函数如下:


内存控制块的数据结构
Typedef
struct

{void *osmemaddr ;指向内存分区起始地址的指针。
Void *osmemfreelist ;指向下一个空余内存控制块或者下一个空余内存块的指针,
Int32u osmemblksize ;
内存分区中内存块的大小,是建立内存分区时定义的。
Int32u osmemnblks ;
内存分区中总的内存块数量,也是建立该内存分区时定义的。
Int32u osmemnfree ;
内存分区块中当前获得的空余块数量。
}os_mem;
1;建立一个内存分区,OSMemCreate()
2:分配一个内存块,OSMemGet()
应用程序通过调用该函数,从已经建立的内存分区中申请一个内存块。该函数唯一的参数是指向特定内存分区的指针。
3:释放一个内存块,OSMemPut()
当应用程序不再使用一个内存块时,必须及时的把它释放,并放回到相应的内存分区中,这个操作就是通过调用该函数实现的。
4:查询一个内存分区的状态,OSQMemQuery()

版权声明:本文为博主原创文章,未经博主允许不得转载。

2 时间管理和内存管理

时间管理 uC/OS-II的时间管理是通过定时中断来实现的,该定时中断一般为10毫秒或100毫秒发生一次(这个时间片段是OS的作者推荐的,大家可以参考邵贝贝翻译的《嵌入式实时操作系统ucos-II》...
  • u012951123
  • u012951123
  • 2013年12月02日 09:10
  • 479

PMBOK(第五版)学习笔记 —— 6 项目时间管理

PMBOK(第五版)第六章项目时间管理部分的知识点梳理。
  • AntreeHuang
  • AntreeHuang
  • 2015年04月01日 09:55
  • 3195

对于时间管理初识--时间管理入门

在这个微信,QQ遍布全球的世界里,越来越多的人们迫切自己的时间得到充实,希望自己的话题能有人回复,越来越多的人患有社交焦虑症。但是在这个时间上,人们往往工作效率很低,你身边是否有人这样抱怨过:我今天不...
  • wanna_dance
  • wanna_dance
  • 2016年05月11日 19:35
  • 2957

【读书感悟】关于时间管理和学习

这一段时间断断续续的读了几本关于时间管理的书,然后有一些感想,想了想,还是记录下来比较保险,免得又只有但分钟热度了~...
  • YYM15732626210
  • YYM15732626210
  • 2016年12月11日 23:58
  • 370

一个程序员的时间管理

如果每天都有86400元进入你的银行户头,而你必须当天用光,你会如何运用这笔钱?        天下真有这样的好事吗?        是的,而且这种好事每天都在发生着,你真的有这样一个户头...
  • qq1175421841
  • qq1175421841
  • 2016年04月07日 14:54
  • 605

《微时间管理术》心得分享

利用每天上班在公交车上的时间,花了大约1周的时间,把《微时间管理术》这本电子书看完了(确切的说,很久之前曾经一扫而过)。从中学到了方法,觉得有必要在团队内进行分享,现整理成此文。 《微时间管理术》...
  • wjn811
  • wjn811
  • 2016年03月17日 19:59
  • 413

关于时间管理的一些心得

前言 你是否有这样的体会: 坐在电脑面前忙碌了一天,等到快下班的时候发现还有一大堆的事情没有做完,如果这种情况多次发生,我觉得你是时候对你的时间好好管理一下了。  轻重缓急 19世纪意大利经济学...
  • zdp072
  • zdp072
  • 2014年04月20日 15:29
  • 1531

【时间管理】要事第一--时间管理四象限法

转自:http://blog.sina.com.cn/s/blog_46863d910100sjuv.html 【30S导读】时间安排中要第一优先做重要而不紧急的事情。 ...
  • baidu_28514449
  • baidu_28514449
  • 2015年08月06日 16:33
  • 1190

产品经理——如何提高时间管理能力!!

如何提高时间管理能力。 人类生活唯一的主题就是如何度过自己的时间。时间的 管理本质上是对自己的管理,所以,时间管理能力的强弱是个人能力最主要的标志之一,是一个人核心竞争力之一,关乎工作、学习、生活的效...
  • fourxfour
  • fourxfour
  • 2016年07月14日 15:02
  • 913

【时间管理】两个故事理解时间管理的必要

故事一:     农夫早上起来,对妻子说要去耕地了。可是当他走到要耕的那片地时,发现耕地的机器(耕耘机)需要加油了,农夫就准备去加油。可是刚想到机器加油,就想起家里的四五头猪早上还没喂。这机器没...
  • Gnd15732625435
  • Gnd15732625435
  • 2016年04月19日 12:45
  • 1251
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2 时间管理和内存管理
举报原因:
原因补充:

(最多只允许输入30个字)