环形推进定时器调度方法技术

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

【技术实现步骤摘要】

本专利技术涉及一种定时器的调度方法,尤其是一种电力系统二次实时监控装置中执行实时通讯协议转换、数据采集与计算时环形推进的定时器调度方法。
技术介绍
在数字化变电站、数字化电网应用中,需要大量的二次侧装置与设备,这些智能设备需要与本间隔内的其他智能设备,相邻间隔内的智能设备,上下级智能设备与系统进行大量的数据交换,这些交换的协议可能相同,也可能不同;同时智能装置本身还需要进行密度很高的数据采集与计算任务。这些任务的启动与完成依赖于定时器的启动、中止、查询等操作,定时器这些操作的效率严重影响到整个装置的性能与效率。因此,需要高效而且通用的定时器调度方法。当前的定时器调度方法主要有如下几种(1) 单向链表方法基于简单的单向链表方法是一种常用于少量定时器的调度计算方法,如图1所示,每一个小方框代表一个定时器,该调度计算方法是在计算机的每个定时器调度程序扫描定时器队列的周期(简称滴答,英文为tick),把所有的定时器检査一遍,验证是否有定时器到期,同时将每个定时器的剩余时间减一。如果tick非常短,这种方法不能在一个tick内检查太多的定时器;如果tick非常长,则定时器的精度又有影响。同时这种计算方法的删除与推进操作效率都非常低。(2) 增量型双向链表方法增量型双向链表方法把定时器按照到时时刻排列成一个长链,每个定时器记录自身到时时刻与上一个定时器到时时间的时间差,如图2所示,因为所有定时器基于排序,所以该调度方法几乎没有扫描的开销,判断是否有定时器超时,仅需要判断链表头的第一个定时器即可。但是增加一个定时器,开销较大,需要遍历整个链表,如果定时器数量很多时,添加定时器的效率非常差。删除定时器的操作同样的原因效率也非常低下。这个方法一般仅用于插入与删除操作并不频繁,平均定时时长比较短的情况下。(3)分类定时器调度方法这种调度方法,采用根据定时器时长分类的方法,系统根据所用到的定时时长将定时器进行归类,针对每个长度的定时器构造一个链表。如图3所示,系统根据定时器时长100tick, 300tick, 600tick分别构造AIOO, A300, A600三类链表,当判断是否有定时器超时,仅需要在每个tick内扫描定时器的第一个定时器就可以了。同时因为每个链表仅有一种定时时延,新登记的定时器直接插入到对应链表的尾部就可以了。这种方法,利用了增量型双向链表方法的优点,同时又克服了增量型双向链表方法在删除和添加定时器时效率低下的缺点。如果一个系统使用到的定时器时长的种类很少时,这种调度方法非常高效。显然,如果定时器种类很多时,这种方法就不适用。以上所述的定时器调度方法,在调度海量(如上万)定时器时,通常不能同时如下几个问题1、定时器的扫描效率;2、定时器的删除、添加效率;3、定时器的精度;4、定时器的时延种类;当前数字化变电站中要求通讯与采集、计算等任务越来越多,速度也越来越块,迫切需要一种通用又非常高效的海量定时器的调度方法。
技术实现思路
本专利技术的目的是克服现有技术中存在的不足,提供一种,该方法能实现高效的定时器扫描以及高效的定时器添加、删除操作,同时对定时器的精度与时延种类没有任何限制。按照本专利技术提供的技术方案,所述包括如下步骤(1) 根据系统的需要,取整数m,确定建立W二2""个定时器队列的头指针,建立一个环形队列;所述环形队列包含W个定时器链表,这些定时器链表根据其剩余的滴答数组成一个环形的队列,首尾相连;所述定时器队列的头指针指向链表头;(2) 建立全局的tickcount变量,并初始化为0;(3) 在每个最小时钟单位,进行一次扫描,同时tickcount变量自动加1;(4) 添加一个定时器时,将该定时器的时延与W做MOD运算得到N,将所述添加的定时器加入到第N个队列的尾部;(5) 扫描定时器时,仅扫描第tickcount号链表,若链表为空,扫描直接结束;若不为空,则判断tickcomit是否大于被扫描定时器的对应时延,如果是则该定时器超时,启动该定时器的超时任务;否则,直接将所述时延减去W國l;(6)删除定时器时,无需做任何运算,只需要根据双向链表的删除方法将定时器直接删除;所述队列内部采用双向链表,每个定时器除了保持自身的时延外,还拥有指向下一个后继定时器和前一个前驱定时器的指针。所述双向链表的删除方法为不经过定时器扫描过程,设有3个连续排列的s定时器、p定时器、q定时器,则删除p定时器时,把s定时器的后继指针指向q定时器,q定时器的前驱指针指向s定时器,并收回p定时器结点。扫描定时器时,通过把所述全局的tickcount变量的值增加1,仅搜索第tickcount号链表,无需对所有队列进行搜索。本专利技术的优点是以空间换取时间,通过建立W+l个全局变量,同时通过全局的tickcmmt变量,用于循环推进,使得扫描效率大大提高,因为大量的定时器分散在W个队列中,通过tickcount变量可以快速的定位,所以添加与删除的效率也显著提高。附图说明图1是现有单向链表方法示意图。图2是现有增量型双向链表方法示意图。图3是现有分类定时器调度方法示意图。图4是本专利技术定时器调度方法示意图。图5是本专利技术定时器调度方法步骤3所描述的100队列示意图。图6是本专利技术定时器调度方法步骤4所描述的100队列示意图。具体实施例方式下面结合附图和实施例对本专利技术作进一步说明。本专利技术是在前面所述分类定时器调度方法的基础上,引入环形队列和全局变量而建立起来的。本专利技术包括如下步骤1、 根据系统的需要,取整数m,确定建立W二2"个定时器队列的头指针,建立一个环形队列,该队列如图4所示,包含W个定时器链表,这些定时器链表根据其剩余的滴答数组成一个环形的队列,首尾相连。2、 建立全局的tickcoimt变量,并初始化为0,用于指向可能有超时的定时器队列;53、 添加一个定时器时,根据时延与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-2"个,进而在进行添加或扫描操作时使用与运算替代模运算,大大减少了计算机的运算量。5、 删除定时器时,操作更加简单,直接通过双向链表的删除算法,不经过定时器扫描过程。如有3个定时器s,p,q连续排列,删除p定时器时,只需把s的后继指针指向q, q的前驱指针指向s,并收回p定时器结点就本文档来自技高网
...

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

【技术特征摘要】

【专利技术属性】
技术研发人员:凌万水
申请(专利权)人:无锡威泰迅电力科技有限公司
类型:发明
国别省市:32[]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利