CN101645024A - 环形推进定时器调度方法 - Google Patents

环形推进定时器调度方法 Download PDF

Info

Publication number
CN101645024A
CN101645024A CN200910034087A CN200910034087A CN101645024A CN 101645024 A CN101645024 A CN 101645024A CN 200910034087 A CN200910034087 A CN 200910034087A CN 200910034087 A CN200910034087 A CN 200910034087A CN 101645024 A CN101645024 A CN 101645024A
Authority
CN
China
Prior art keywords
timer
tickcount
queue
scanning
dispatching method
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.)
Granted
Application number
CN200910034087A
Other languages
English (en)
Other versions
CN101645024B (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.)
WUXI WONTEX-POWER Corp
Original Assignee
WUXI WONTEX-POWER Corp
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 WUXI WONTEX-POWER Corp filed Critical WUXI WONTEX-POWER Corp
Priority to CN200910034087A priority Critical patent/CN101645024B/zh
Publication of CN101645024A publication Critical patent/CN101645024A/zh
Application granted granted Critical
Publication of CN101645024B publication Critical patent/CN101645024B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Communication Control (AREA)

Abstract

本发明涉及一种定时器的调度方法,尤其是一种电力系统二次实时监控装置中执行实时通讯协议转换、数据采集与计算时环形推进的定时器调度方法。根据系统的需要,取整数m,确定建立W=2m个定时器队列的头指针,建立一个环形队列;建立全局的tickcount变量,并初始化为0,并利用tickcount变量进行定时器的扫描、添加、删除等操作。本发明的优点是:以空间换取时间,通过建立W+1个全局变量,同时通过tickcount循环推进,使得扫描效率大大提高,因为大量的定时器分散在W个队列中,通过tickcount可以快速的定位,所以添加与删除的效率也显著提高。

Description

环形推进定时器调度方法
技术领域
本发明涉及一种定时器的调度方法,尤其是一种电力系统二次实时监控装置中执行实时通讯协议转换、数据采集与计算时环形推进的定时器调度方法。
背景技术
在数字化变电站、数字化电网应用中,需要大量的二次侧装置与设备,这些智能设备需要与本间隔内的其他智能设备,相邻间隔内的智能设备,上下级智能设备与系统进行大量的数据交换,这些交换的协议可能相同,也可能不同;同时智能装置本身还需要进行密度很高的数据采集与计算任务。这些任务的启动与完成依赖于定时器的启动、中止、查询等操作,定时器这些操作的效率严重影响到整个装置的性能与效率。因此,需要高效而且通用的定时器调度方法。
当前的定时器调度方法主要有如下几种:
(1)单向链表方法
基于简单的单向链表方法是一种常用于少量定时器的调度计算方法,如图1所示,每一个小方框代表一个定时器,该调度计算方法是在计算机的每个定时器调度程序扫描定时器队列的周期(简称滴答,英文为tick),把所有的定时器检查一遍,验证是否有定时器到期,同时将每个定时器的剩余时间减一。如果tick非常短,这种方法不能在一个tick内检查太多的定时器;如果tick非常长,则定时器的精度又有影响。同时这种计算方法的删除与推进操作效率都非常低。
(2)增量型双向链表方法
增量型双向链表方法把定时器按照到时时刻排列成一个长链,每个定时器记录自身到时时刻与上一个定时器到时时间的时间差,如图2所示,因为所有定时器基于排序,所以该调度方法几乎没有扫描的开销,判断是否有定时器超时,仅需要判断链表头的第一个定时器即可。但是增加一个定时器,开销较大,需要遍历整个链表,如果定时器数量很多时,添加定时器的效率非常差。删除定时器的操作同样的原因效率也非常低下。这个方法一般仅用于插入与删除操作并不频繁,平均定时时长比较短的情况下。
(3)分类定时器调度方法
这种调度方法,采用根据定时器时长分类的方法,系统根据所用到的定时时长将定时器进行归类,针对每个长度的定时器构造一个链表。如图3所示,系统根据定时器时长100tick,300tick,600tick分别构造A100,A300,A600三类链表,当判断是否有定时器超时,仅需要在每个tick内扫描定时器的第一个定时器就可以了。同时因为每个链表仅有一种定时时延,新登记的定时器直接插入到对应链表的尾部就可以了。这种方法,利用了增量型双向链表方法的优点,同时又克服了增量型双向链表方法在删除和添加定时器时效率低下的缺点。如果一个系统使用到的定时器时长的种类很少时,这种调度方法非常高效。显然,如果定时器种类很多时,这种方法就不适用。
以上所述的定时器调度方法,在调度海量(如上万)定时器时,通常不能同时如下几个问题:1、定时器的扫描效率;2、定时器的删除、添加效率;3、定时器的精度;4、定时器的时延种类;当前数字化变电站中要求通讯与采集、计算等任务越来越多,速度也越来越块,迫切需要一种通用又非常高效的海量定时器的调度方法。
发明内容
本发明的目的是克服现有技术中存在的不足,提供一种环形推进定时器调度方法,该方法能实现高效的定时器扫描以及高效的定时器添加、删除操作,同时对定时器的精度与时延种类没有任何限制。
按照本发明提供的技术方案,所述环形推进定时器调度方法包括如下步骤:
(1)根据系统的需要,取整数m,确定建立W=2m个定时器队列的头指针,建立一个环形队列;所述环形队列包含W个定时器链表,这些定时器链表根据其剩余的滴答数组成一个环形的队列,首尾相连;所述定时器队列的头指针指向链表头;
(2)建立全局的tickcount变量,并初始化为0;
(3)在每个最小时钟单位,进行一次扫描,同时tickcount变量自动加1;
(4)添加一个定时器时,将该定时器的时延与W做MOD运算得到N,将所述添加的定时器加入到第N个队列的尾部;
(5)扫描定时器时,仅扫描第tickcount号链表,若链表为空,扫描直接结束;若不为空,则判断tickcount是否大于被扫描定时器的对应时延,如果是则该定时器超时,启动该定时器的超时任务;否则,直接将所述时延减去W-1;
(6)删除定时器时,无需做任何运算,只需要根据双向链表的删除方法将定时器直接删除;
所述队列内部采用双向链表,每个定时器除了保持自身的时延外,还拥有指向下一个后继定时器和前一个前驱定时器的指针。
所述双向链表的删除方法为:不经过定时器扫描过程,设有3个连续排列的s定时器、p定时器、q定时器,则删除p定时器时,把s定时器的后继指针指向q定时器,q定时器的前驱指针指向s定时器,并收回p定时器结点。
扫描定时器时,通过把所述全局的tickcount变量的值增加1,仅搜索第tickcount号链表,无需对所有队列进行搜索。
本发明的优点是:以空间换取时间,通过建立W+1个全局变量,同时通过全局的tickcount变量,用于循环推进,使得扫描效率大大提高,因为大量的定时器分散在W个队列中,通过tickcount变量可以快速的定位,所以添加与删除的效率也显著提高。
附图说明
图1是现有单向链表方法示意图。
图2是现有增量型双向链表方法示意图。
图3是现有分类定时器调度方法示意图。
图4是本发明定时器调度方法示意图。
图5是本发明定时器调度方法步骤3所描述的100队列示意图。
图6是本发明定时器调度方法步骤4所描述的100队列示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步说明。
本发明环形推进定时器调度方法是在前面所述分类定时器调度方法的基础上,引入环形队列和全局变量而建立起来的。本发明包括如下步骤:
1、根据系统的需要,取整数m,确定建立W=2m个定时器队列的头指针,建立一个环形队列,该队列如图4所示,包含W个定时器链表,这些定时器链表根据其剩余的滴答数组成一个环形的队列,首尾相连。
2、建立全局的tickcount变量,并初始化为0,用于指向可能有超时的定时器队列;
3、添加一个定时器时,根据时延与W做MOD运算得到N,将本定时器加入到第N个队列的尾部。如图5所示为在tickcount为0时添加了时延为100定时器,tickcount为10时添加了时延为90定时器,tickcount为30时添加了时延为70定时器,tickcount为60时添加了时延为40定时器,tickcount为80时添加了时延为1044定时器,tickcount为90时添加了时延为1034定时器,第100号队列里定时器的情况。
4、扫描定时器时,仅扫描第tickcount号链表,若链表为空,扫描直接结束;若不为空,则判断tickcount是否大于对应时延,如果是则该定时器超时,启动该定时器的超时任务;否则,直接将时延减去W-1。如图4所示,相当于每个tick,扫描器自动沿图4的方向按环形推动一格。100号队列在tickcount为100时的情况,此时时延不大于1023的定时器全部超时,对应任务将启动,同时大于1023的定时器全部将时延减去1023。执行完毕后100号队列如图6所示。
由于队列个数取值为W=2m个,进而在进行添加或扫描操作时使用与运算替代模运算,大大减少了计算机的运算量。
5、删除定时器时,操作更加简单,直接通过双向链表的删除算法,不经过定时器扫描过程。如有3个定时器s,p,q连续排列,删除p定时器时,只需把s的后继指针指向q,q的前驱指针指向s,并收回p定时器结点就完成了。
如前所述,分类定时器调度方法主要应用于定时器延时种类非常少的场合,对于延时种类非常多的情况下,效率将快速下降。下降的原因是种类多时,其队列也多,而且这些队列是无序的,从而导致索引效率低下。推进定时器调度方法采用环形队列克复这个缺点,这些队列依次环形排列,搜索时可以直接查找到对应的链表。同时扫描时则由tickcount按队列依次推进,不需要额外的搜索。
如:取m=10;将建立W=1024个队列。当tickcount=1时,扫描时直接扫描1号队列就可以了。如tickcount=23时,直接扫描23号队列就可以了,当有一个新的定时器时需要添加时,如果其时长为100,则直接加入到100号队列,如果时长为2000,则加入到2000 mod 1024=976,即976号队列就可以。
本发明的另一个关键特点是,队列总数的取值,严格取2k,k为整数,这为定时器扫描,定时器添加等计算提供了方便,有利于采用计算机效率较高的“与”运算代替效率较低的“MOD”运算,计算公式为(absTicks+ticks)&(W-1),计算效率大为提高。例如,添加延时3000的定时器时,如果当时tickcount=15,则要加入的队列为(3000+15)&(1024-1)=967号队列。
本发明方法在每个队列内部采用双向链表,为定时器添加与删除带来了极大的遍历,添加时,直接通过队列的头指针就可以了,而删除时,则直接通过定时器本身的信息就完成,连队列定位“&”运算都省去了。
本发明所述的环形推进定时器调度方法,本身造成的开销非常低,对于不同的宿主机器,可以根据本身的内存大小,去定队列的长度,而方法本身与精度都能够得到统一处理,有效的降低定时器系统的复杂程度,对于系统的可移植性,可维护性都有显著的提高,尤其是为数据协议转换、采集与计算所用到的定时器提供了一套完整、精确、稳定、方便、统一的定时器调度方法。

Claims (3)

1、环形推进定时器调度方法,其特征是所述方法包括如下步骤:
(1)根据系统的需要,取整数m,确定建立W=2m个定时器队列的头指针,建立一个环形队列;所述环形队列包含W个定时器链表,这些定时器链表根据其剩余的滴答数组成一个环形的队列,首尾相连;所述定时器队列的头指针指向链表头;
(2)建立全局的tickcount变量,并初始化为0;
(3)在每个最小时钟单位,进行一次扫描,同时tickcount变量自动加1;
(4)添加一个定时器时,将该定时器的时延与W做MOD运算得到N,将所述添加的定时器加入到第N个队列的尾部;
(5)扫描定时器时,仅扫描第tickcount号链表,若链表为空,扫描直接结束;若不为空,则判断tickcount是否大于被扫描定时器的对应时延,如果是则该定时器超时,启动该定时器的超时任务;否则,直接将所述时延减去W-1;
(6)删除定时器时,无需做任何运算,只需要根据双向链表的删除方法将定时器直接删除;
所述队列内部采用双向链表,每个定时器除了保持自身的时延外,还拥有指向下一个后继定时器和前一个前驱定时器的指针。
2、如权利要求1所述的环形推进定时器调度方法,其特征是所述双向链表的删除方法为:不经过定时器扫描过程,设有3个连续排列的s定时器、p定时器、q定时器,则删除p定时器时,把s定时器的后继指针指向q定时器,q定时器的前驱指针指向s定时器,并收回p定时器结点。
3、如权利要求1所述的定时器调度方法,其特征在于:扫描定时器时,通过把所述全局的tickcount变量的值增加1,仅搜索第tickcount号链表,无需对所有队列进行搜索。
CN200910034087A 2009-08-21 2009-08-21 环形推进定时器调度方法 Active CN101645024B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910034087A CN101645024B (zh) 2009-08-21 2009-08-21 环形推进定时器调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910034087A CN101645024B (zh) 2009-08-21 2009-08-21 环形推进定时器调度方法

Publications (2)

Publication Number Publication Date
CN101645024A true CN101645024A (zh) 2010-02-10
CN101645024B CN101645024B (zh) 2012-09-19

Family

ID=41656918

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910034087A Active CN101645024B (zh) 2009-08-21 2009-08-21 环形推进定时器调度方法

Country Status (1)

Country Link
CN (1) CN101645024B (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677499A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 基于硬件的超时管理平台
CN105808329A (zh) * 2016-02-25 2016-07-27 北京京东尚科信息技术有限公司 分布式超时任务调度方法和装置
CN106406997A (zh) * 2016-09-20 2017-02-15 杭州华三通信技术有限公司 一种定时器调度方法和装置
CN109104326A (zh) * 2018-06-05 2018-12-28 阿里巴巴集团控股有限公司 超时处理方法及装置和电子设备
CN109697592A (zh) * 2018-12-21 2019-04-30 江苏满运软件科技有限公司 基于环形数组的货源下架方法、系统、设备及存储介质
CN111966505A (zh) * 2020-10-26 2020-11-20 成都掌控者网络科技有限公司 一种基于时间的触发事件控制方法、装置及存储介质

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6647505B1 (en) * 2000-06-23 2003-11-11 Unisys Corporation Deletion system and method for removing temporary timer entries having a weight value of zero from a circular queue of sequential fixed timer entries
US6714959B1 (en) * 2000-06-23 2004-03-30 Unisys Corporation System and method for optimizing insertions for timer queue operations
US6763476B1 (en) * 2001-04-03 2004-07-13 Unisys Corporation Enhanced timer queue mechanism for dynamic capacity increase
CN100589594C (zh) * 2003-12-31 2010-02-10 中兴通讯股份有限公司 软件定时器的定时及控制方法
CN1304949C (zh) * 2005-01-12 2007-03-14 宁波大学 一种实时多任务操作系统的定时器调度方法
CN100570568C (zh) * 2007-01-12 2009-12-16 中兴通讯股份有限公司 用于实时操作系统的定时方法和系统

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105677499A (zh) * 2015-12-29 2016-06-15 曙光信息产业(北京)有限公司 基于硬件的超时管理平台
CN105677499B (zh) * 2015-12-29 2018-10-12 曙光信息产业(北京)有限公司 基于硬件的超时管理平台
CN105808329A (zh) * 2016-02-25 2016-07-27 北京京东尚科信息技术有限公司 分布式超时任务调度方法和装置
CN106406997A (zh) * 2016-09-20 2017-02-15 杭州华三通信技术有限公司 一种定时器调度方法和装置
CN106406997B (zh) * 2016-09-20 2020-03-06 新华三技术有限公司 一种定时器调度方法和装置
CN109104326A (zh) * 2018-06-05 2018-12-28 阿里巴巴集团控股有限公司 超时处理方法及装置和电子设备
CN109697592A (zh) * 2018-12-21 2019-04-30 江苏满运软件科技有限公司 基于环形数组的货源下架方法、系统、设备及存储介质
CN109697592B (zh) * 2018-12-21 2021-04-30 江苏满运软件科技有限公司 基于环形数组的货源下架方法、系统、设备及存储介质
CN111966505A (zh) * 2020-10-26 2020-11-20 成都掌控者网络科技有限公司 一种基于时间的触发事件控制方法、装置及存储介质

Also Published As

Publication number Publication date
CN101645024B (zh) 2012-09-19

Similar Documents

Publication Publication Date Title
CN101645024B (zh) 环形推进定时器调度方法
CN100583920C (zh) 测试脚本的生成方法及装置和测试方法及装置及系统
CN102254024A (zh) 海量数据处理系统及方法
CN102355382A (zh) 一种控制器局域网总线分析与触发的方法
CN102722971A (zh) 一种协议固化的智能数据采集装置
CN102521218B (zh) 文件合成方法及装置
CN113283096B (zh) 配网线路台账数据获取及异常数据分析的方法和相关装置
CN103955419A (zh) 具有串行总线协议在线实时检测分析功能的逻辑分析仪
CN103020169A (zh) 一种电力数据的有效性及唯一性处理方法
CN110535551B (zh) 一种电力系统中故障录波采样数据的同步方法及系统
CN201657014U (zh) 双接口千兆以太网数据采集卡
CN103077080A (zh) 基于高性能平台的并行程序性能数据采集方法及装置
CN110209702B (zh) 开关磁阻电机功率拓扑推荐方法、系统、终端及存储介质
CN102063401B (zh) 分布录波装置的tdmow串行总线结构及编码方法
CN103617171A (zh) 一种海量历史数据快速查询系统
CN201322778Y (zh) 电力系统负荷特性测辩装置
CN102496035A (zh) 实现智能卡与卡终端交互数据采集的系统及方法
CN203012949U (zh) 一种新型现场电表采集系统
CN1303544C (zh) 自动进行开关量事件先后顺序记录的系统及其方法
CN104460488B (zh) 一种提高加料机过程数据分析精度的方法
CN203673288U (zh) 一种多路数据采集装置
CN202563547U (zh) 一种电子元器件元件清单表处理系统
CN106199487A (zh) 智能化电能表校验掌机
CN109558262A (zh) 一种基于计算机验证码识别的大数据分析系统
CN209132778U (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
PE01 Entry into force of the registration of the contract for pledge of patent right

Denomination of invention: Dispatching method of annular propulsion timer

Effective date of registration: 20131113

Granted publication date: 20120919

Pledgee: Agricultural Bank of China Limited by Share Ltd Wuxi science and Technology Branch

Pledgor: Wuxi Wontex-Power Corporation

Registration number: 2013990000841

PLDC Enforcement, change and cancellation of contracts on pledge of patent right or utility model
PC01 Cancellation of the registration of the contract for pledge of patent right

Date of cancellation: 20170328

Granted publication date: 20120919

Pledgee: Agricultural Bank of China Limited by Share Ltd Wuxi science and Technology Branch

Pledgor: Wuxi Wontex-Power Corporation

Registration number: 2013990000841

PC01 Cancellation of the registration of the contract for pledge of patent right