CN100511155C - 无积累误差和自适应定时器实现方法 - Google Patents

无积累误差和自适应定时器实现方法 Download PDF

Info

Publication number
CN100511155C
CN100511155C CNB2006101474388A CN200610147438A CN100511155C CN 100511155 C CN100511155 C CN 100511155C CN B2006101474388 A CNB2006101474388 A CN B2006101474388A CN 200610147438 A CN200610147438 A CN 200610147438A CN 100511155 C CN100511155 C CN 100511155C
Authority
CN
China
Prior art keywords
time
executive
dormancy
execution
timer
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CNB2006101474388A
Other languages
English (en)
Other versions
CN101206584A (zh
Inventor
晏春平
孙刚
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai B-Star Broadband Technology Co., Ltd.
Original Assignee
Shanghai B Star Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Shanghai B Star Co Ltd filed Critical Shanghai B Star Co Ltd
Priority to CNB2006101474388A priority Critical patent/CN100511155C/zh
Publication of CN101206584A publication Critical patent/CN101206584A/zh
Application granted granted Critical
Publication of CN100511155C publication Critical patent/CN100511155C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Debugging And Monitoring (AREA)
  • Executing Machine-Instructions (AREA)

Abstract

一种无积累误差和自适应定时器实现方法,包括获取当前的系统时间值T0并记录,作为执行实例开始的初始时间值,执行次数m清零;获取当前系统时间T1,将其作为本次执行的起始时间;执行任务,执行次数m增加1;用执行周期T10乘以执行次数m,得到理论执行总时间T4;用当前的系统时间值T50,减去初始时间值T0,得到实际的执行总时间T5;用理论执行总时间T4减去实际的执行总时间T5,得到需要休眠的总时间T6;如果需要休眠的总时间大于0,执行休眠,休眠时间结束后唤醒,然后判断是否需要修改执行周期,如果是,则修改执行周期,重启定时器。本发明可以通过类似积分的方式进行补偿,从而实现消除累积误差的目的,并消除单次的大扰动,且执行周期可动态调节。

Description

无积累误差和自适应定时器实现方法
技术领域
本发明涉及一种在计算机中和通信领域实现无积累误差和自适应定时器的实现方法。
背景技术
定时器是用于控制执行实例定期执行的,例如在TCP通信中,如果一定时间内没有收到回应,会再次发起连接请求;在软件维护的的MAC(媒质接入层)表中,需要维护表项的老化时间,一般是定时执行减1的操作,减至0时就将表项删除。在需要长期进行定时操作的场合,如协议编程,如果每次的定时存在一定的误差,则经过很多次的执行之后,可能会积累起很大的时间误差,这些误差将会影响协议正确运转,导致协议出现很隐晦的问题。而在通信领域,协议非常的多,对于无累积误差的定时需求是很强烈的。
定时器的时钟源来源于硬件时钟中断,时钟中断每隔一定时间产生,该时间间隔为最小计时时长,也就是定时器的计时精度,每个对硬件时钟中断处理称为机器的定时周期。
现在定时器的实现多采用对列的形式实现,时钟周期一到,就对定时对列进行减1的操作,当结果等于0时,就认为定时时间已到,调用执行函数执行任务。对于对列的组织形式有单对列和多对列之分。这种定时方式对机器要求较高,如果执行函数的执行时间超过定时的周期,将可能会产生一些问题;而如果因为对列庞大,单次遍历时间已经超过硬件时钟中断周期的情况下,整个定时体制的精度都会受到影响。所以应该尽量减少时钟中断处理的时间,并具有容纳单次执行时间过长的能力。
发明内容
本发明的目的在于提供一种无积累误差和自适应定时器实现方法,以消除定时器中单次任务执行耗时过长的大扰动和积累误差。
为达上述目的,本发明采用如下技术方案:
一种无积累误差和自适应定时器实现方法,包括以下步骤:
1)开始;
2)获取当前的系统时间值T0并记录,作为执行实例开始的初始时间值,执行次数m清零;
3)获取当前系统时间T1,将其作为本次执行的起始时间;
4)执行任务,执行次数m增加1;
5)用执行周期T10乘以执行次数m,得到理论执行总时间T4;
6)用当前的系统时间值T50,减去初始时间值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)用当前的系统时间值T50,减去初始时间值T0,得到实际的执行总时间T5;
7)用理论执行总时间T4减去实际的执行总时间T5,得到需要休眠的总时间T6;用需要休眠的总时间T6减去估算的定时器本身计算所需的耗时量,对休眠时间进行补偿。该耗时量与机器及运行的环境有关,通过对需要休眠的总时间T6进行补偿可以获得更好的精度;
8)如果需要休眠的总时间大于0,则执行休眠,休眠时间结束后唤醒,然后进入步骤9);否则直接进入步骤10);
9)判断是否需要修改执行周期,如果是,则修改执行周期,重启定时器,返回步骤2);如果否,则直接返回步骤3)。
其中,在上述步骤中,如果收到外部中断或指令,则结束执行过程。
其中,在所述步骤4)之后,步骤5)之前还包括以下步骤:
获取当前系统时间T2,减去本次执行的起始时间T1,得到并记录本次任务的执行时间T3,以用于计算任务执行的平均耗时值和CPU负荷率;即,将每个执行周期的执行时间T3相加再除以总的执行次数就得到了任务执行的平均耗时值,平均耗时值与执行周期的比值就是定时器的CPU负荷率。
上述实施例的实现需具备以下两个条件:1、具备读取系统时钟的能力,而且读取的精度应该尽可能的高,因为这将决定最终的定时精度;2、操作系统具备对进程或线程的休眠和唤醒能力,而且控制的精度越高越好,因为其精度也会影响最终的定时精度。以上两个条件在一般的操作系统和硬件平台上都能够提供。

Claims (4)

1、一种无积累误差和自适应定时器实现方法,其特征在于包括以下步骤:
1)开始;
2)获取当前的系统时间值T0并记录,作为执行实例开始的初始时间值,执行次数m清零;
3)获取当前系统时间T1,将其作为本次执行的起始时间;
4)执行任务,执行次数m增加1;
5)用执行周期T10乘以执行次数m,得到理论执行总时间T4;
6)用当前的系统时间值T50,减去初始时间值T0,得到实际的执行总时间T5;
7)用理论执行总时间T4减去实际的执行总时间T5,得到需要休眠的总时间T6;
8)如果需要休眠的总时间大于0,执行休眠,休眠时间结束后唤醒,然后进入步骤9);否则进入步骤9);
9)判断是否需要修改执行周期,如果是,则修改执行周期,重启定时器,返回步骤2);如果否,则返回步骤3)。
2、根据权利要求1所述的无积累误差和自适应定时器实现方法,其特征在于:在所述步骤4)之后,步骤5)之前还包括以下步骤:
获取当前系统时间T2,减去本次执行的起始时间T1,得到并记录本次任务的执行时间T3,以用于计算任务执行的平均耗时值和CPU负荷率。
3、根据权利要求1或2所述的无积累误差和自适应定时器实现方法,其特征在于:在所述步骤7)之后,步骤8)之前还包括以下一休眠时间补偿步骤:
用需要休眠的总时间T6减去估算的定时器本身计算所需的耗时量,对休眠时间进行补偿。
4、根据权利要求1或2所述的无积累误差和自适应定时器实现方法,其特征在于:在所述方法的任一步骤中,如果收到外部中断或指令,则结束执行。
CNB2006101474388A 2006-12-18 2006-12-18 无积累误差和自适应定时器实现方法 Expired - Fee Related CN100511155C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006101474388A CN100511155C (zh) 2006-12-18 2006-12-18 无积累误差和自适应定时器实现方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006101474388A CN100511155C (zh) 2006-12-18 2006-12-18 无积累误差和自适应定时器实现方法

Publications (2)

Publication Number Publication Date
CN101206584A CN101206584A (zh) 2008-06-25
CN100511155C true CN100511155C (zh) 2009-07-08

Family

ID=39566818

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006101474388A Expired - Fee Related CN100511155C (zh) 2006-12-18 2006-12-18 无积累误差和自适应定时器实现方法

Country Status (1)

Country Link
CN (1) CN100511155C (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104142829B (zh) * 2014-08-04 2017-03-15 中国科学院上海高等研究院 智能优化操作系统定时器功能的方法及系统
CN108337180A (zh) * 2017-01-19 2018-07-27 成都鼎桥通信技术有限公司 一种实现udp稳定速率灌包的方法
CN109213577B (zh) * 2017-06-30 2020-09-08 武汉斗鱼网络科技有限公司 一种线程睡眠的方法、装置及计算机设备
CN107678779A (zh) * 2017-09-27 2018-02-09 网宿科技股份有限公司 一种定时任务执行方法和电子设备
CN111935309B (zh) * 2020-09-17 2020-12-29 武汉中科通达高新技术股份有限公司 一种循环任务管理方法及装置
CN115826731B (zh) * 2022-10-19 2023-07-11 科东(广州)软件科技有限公司 休眠控制方法及装置、存储介质和计算设备

Also Published As

Publication number Publication date
CN101206584A (zh) 2008-06-25

Similar Documents

Publication Publication Date Title
CN100511155C (zh) 无积累误差和自适应定时器实现方法
CN106970921B (zh) 一种数据迁移方法及装置
JP4715758B2 (ja) 仮想計算機システムのプロセッサキャッピング方法
JPWO2005106623A1 (ja) Cpuクロック制御装置、cpuクロック制御方法、cpuクロック制御プログラム、記録媒体、及び伝送媒体
CN104536835B (zh) 一种热备份实时控制系统中自适应任务调度方法
KR20190015370A (ko) 적응식 리소스 할당 방법 및 장치
JP2009025939A (ja) タスク制御方法及び半導体集積回路
CN103440167A (zh) Hadoop多作业环境下自学习反馈的任务调度方法
Santy et al. Two protocols to reduce the criticality level of multiprocessor mixed-criticality systems
CN103744730B (zh) 一种任务调度方法和装置
CN118295778A (zh) 一种任务调度方法、装置、电子设备及存储介质
CN104679583B (zh) 一种动态调整时钟中断的方法及装置
Liu et al. Scheduling for energy efficiency and fault tolerance in hard real-time systems
Lozoya et al. The one-shot task model for robust real-time embedded control systems
JP2006349364A (ja) 時刻補正方法
CN103455402A (zh) 一种无累计误差的定时器控制方法
JP6365367B2 (ja) 電子制御装置
CN104597820A (zh) 一种扩展单片机硬件定时器的方法
JP2008217628A (ja) Cpuの省電力システム及び省電力方法
US11055163B2 (en) Method and device for error handling in a communication between distributed software components
US9465655B2 (en) Method for managing threads using executing time scheduling technique and electronic device using the same method
CN112100472A (zh) 爬虫调度方法、装置、终端设备和可读存储介质
CN109542083A (zh) 一种对数字控制系统的信号进行修正的方法、系统和终端
JP6377659B2 (ja) 半導体装置及びその制御方法
CN112835773B (zh) 一种操作系统中任务运行实时性的评估方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C56 Change in the name or address of the patentee

Owner name: SHANGHAI B-STAR BROADBAND TECHNOLOGY CO., LTD.

Free format text: FORMER NAME: SHANGHAI B-STAR BROADBAND TECHNOLOGY + APPLICATION ENGINEERING RESEARCH CENTER CO., LTD.

CP01 Change in the name or title of a patent holder

Address after: 200336 Shanghai city Changning District Honggu Road No. 150

Patentee after: Shanghai B-Star Broadband Technology Co., Ltd.

Address before: 200336 Shanghai city Changning District Honggu Road No. 150

Patentee before: Shanghai B-STAR Co., Ltd.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090708

Termination date: 20141218

EXPY Termination of patent right or utility model