[发明专利]无积累误差和自适应定时器实现方法无效
| 申请号: | 200610147438.8 | 申请日: | 2006-12-18 |
| 公开(公告)号: | CN101206584A | 公开(公告)日: | 2008-06-25 |
| 发明(设计)人: | 晏春平;孙刚 | 申请(专利权)人: | 上海未来宽带技术及应用工程研究中心有限公司 |
| 主分类号: | G06F9/46 | 分类号: | G06F9/46;H04L29/06 |
| 代理公司: | 上海光华专利事务所 | 代理人: | 余明伟 |
| 地址: | 200336*** | 国省代码: | 上海;31 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 积累 误差 自适应 定时器 实现 方法 | ||
技术领域
本发明涉及一种在计算机中和通信领域实现无积累误差和自适应定时器的实现方法。
背景技术
定时器是用于控制执行实例定期执行的,例如在TCP通信中,如果一定时间内没有收到回应,会再次发起连接请求;在软件维护的的MAC(媒质接入层)表中,需要维护表项的老化时间,一般是定时执行减1的操作,减至0时就将表项删除。在需要长期进行定时操作的场合,如协议编程,如果每次的定时存在一定的误差,则经过很多次的执行之后,可能会积累起很大的时间误差,这些误差将会影响协议正确运转,导致协议出现很隐晦的问题。而在通信领域,协议非常的多,对于无累积误差的定时需求是很强烈的。
定时器的时钟源来源于硬件时钟中断,时钟中断每隔一定时间产生,该时间间隔为最小计时时长,也就是定时器的计时精度,每个对硬件时钟中断处理称为机器的定时周期。
现在定时器的实现多采用对列的形式实现,时钟周期一到,就对定时对列进行减1的操作,当结果等于0时,就认为定时时间已到,调用执行函数执行任务。对于对列的组织形式有单对列和多对列之分。这种定时方式对机器要求较高,如果执行函数的执行时间超过定时的周期,将可能会产生一些问题;而如果因为对列庞大,单次遍历时间已经超过硬件时钟中断周期的情况下,整个定时体制的精度都会受到影响。所以应该尽量减少时钟中断处理的时间,并具有容纳单次执行时间过长的能力。
发明内容
本发明的目的在于提供一种无积累误差和自适应定时器实现方法,以消除定时器中单次任务执行耗时过长的大扰动和积累误差。
为达上述目的,本发明采用如下技术方案:
一种无积累误差和自适应定时器实现方法,包括以下步骤:
1)开始;
2)获取当前的系统时间值T0并记录,作为执行实例开始的初始时间值,执行次数m清零;
3)获取当前系统时间T1,将其作为本次执行的起始时间;
4)执行任务,执行次数m增加1;
5)用执行周期T10乘以执行次数m,得到理论执行总时间T4;
6)用当前的系统时间值T5,减去初始时间值T0,得到实际的执行总时间T5;
7)用理论执行总时间T4减去实际的执行总时间T5,得到需要休眠的总时间T6;
8)如果休眠总时间大于0,执行休眠,休眠时间结束后唤醒,然后进入步骤9);否则进入步骤9);
9)判断是否需要修改执行周期,如果是,则修改执行周期,重启定时器,返回步骤2);如果否,则返回步骤3)。
作为本发明的一种改进,在所述步骤4)之后,步骤5)之前还包括以下步骤:
获取当前系统时间T2,减去本次执行的起始时间T1,得到并记录本次任务的执行时间T3,以用于计算任务执行的平均耗时值和CPU负荷率。
作为本发明的又一改进,在所述步骤7)之后,步骤8)之前还包括休眠时间补偿步骤:用需要休眠的总时间T6减去估算的定时器本身计算所需的耗时量,对休眠时间进行补偿。
其中,在所述方法的任一步骤中,如果收到外部中断或指令,则结束执行。
通过本发明方法,累积的误差可以通过类似积分的方式进行补偿,从而实现消除累积误差的目的,并消除单次的大扰动,且执行周期可动态调节。而且只调用系统的休眠机制,不往系统的定时器对列中加入任何节点,几乎不增加系统定时器的负担。同时任务一直由一个进程或线程执行,而不由定时器执行,任务之间的交互和同步都会更加简单。特别适用于通信协议开发领域中定时累积误差和执行时间变化大、但平均值稳定的场合。
以下结合附图及实施例进一步说明本发明。
附图说明
图1为本发明实施例处理流程图。
具体实施方式
一种无积累误差和自适应定时器实现方法,如图2所示,具体包括以下步骤:
1)开始;
2)获取当前的系统时间值T0并记录,作为执行实例开始的初始时间值,执行次数m清零;
3)获取当前系统时间T1,将其作为本次执行的起始时间;
4)执行任务,执行次数m增加1;
5)用执行周期T10乘以执行次数m,得到理论执行总时间T4;
6)用当前的系统时间值T5,减去初始时间值T0,得到实际的执行总时间T5;
7)用理论执行总时间T4减去实际的执行总时间T5,得到需要休眠的总时间T6;用需要休眠的总时间T6减去估算的定时器本身计算所需的耗时量,对休眠时间进行补偿。
该耗时量与机器及运行的环境有关,通过对需要休眠的总时间T6进行补偿可以获得更好的精度;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于上海未来宽带技术及应用工程研究中心有限公司,未经上海未来宽带技术及应用工程研究中心有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200610147438.8/2.html,转载请声明来源钻瓜专利网。
- 上一篇:维氏升降机构导向装置
- 下一篇:一种从制浆废液制备聚合物溶液的方法





