一种通讯平台的精确时钟管理方法技术

技术编号:7122248 阅读:231 留言:0更新日期:2012-04-11 18:40
一种通讯平台的精确时钟管理方法,将多个定时器控制模块进行初始化生成一个空闲定时器控制池,多个定时器控制模块构成定时器控制队列,建立调度控制模块和占用定时器队列,并将各数据结构初始化,调度控制模块中记录定时器控制队列的空闲队列头、空闲队列长度,空闲队列元素;创建定时器时,从定时器控制池中取出一个空闲元素给定时器使用,随着定时器的创建,将调度控制模块中对应的空闲队列长度值相应递减;同时,随着定时器的到期,这个值又相应递增。本发明专利技术具有提供多数量进程间实时通讯时提供精确、可靠时钟的功能;为通讯软件模块跨主机、跨平台间的通讯提供精确的、实时的、可靠的时钟服务。

【技术实现步骤摘要】

本专利技术涉及软件模块间跨主机、跨平台间实时通讯所需要的精确时钟管理。
技术介绍
当前NT平台和UNIX平台都能够提供毫秒级的软件时钟中断,这一点为时钟模块支持0. 1秒和1秒的定时精度提供了保障,但实验可知,当创建的定时器数量不多时,系统提供的定时器完全可以胜任,但当定时器达到一定数量后,操作系统显然在精度和可靠性上再提供什么保障了,所以专利技术了通用的精确时钟管理算法,引入定时器控制队列,调度控制结构和占用定时队列来实现定时器的数据存储,而每个定时器的设置和到达,则转化为对几个简单数据链表的元素增、删操作。提高了代码的执行效率。而作为软件时钟,从理论上讲,是无法提供一种绝对的、丝毫不差的时钟tick的,大家都知道它会受诸多因素的影响,其中最重要的无疑是CPU,在每个时钟周期里,都有时钟处理代码需要处理,这部分代码的运行时间将影响到软件时钟周期的精度,每个时钟周期中一些及小的偏差,在达到一定量的积累后,显然会使软件时钟与系统时钟不一致。所以,时钟模块提供还引入定时纠正功能解决这个问题。
技术实现思路
本专利技术的目的是通过对系统时钟和软件时钟的纠偏和定时控制队列管理的组合运用,以达到软件模块间跨主机、跨平台间实时通讯要求。本专利技术的技术方案是,它包括以下步骤A、将多个定时器控制模块进行初始化生成一个空闲定时器控制池,多个定时器控制模块构成定时器控制队列,建立调度控制模块和占用定时器队列,并将各数据结构初始化,调度控制模块中记录定时器控制队列的空闲队列头、空闲队列长度,空闲队列元素;B、创建定时器时,从定时器控制池中取出一个空闲元素给定时器使用,另外,三种定时器公用这个队列;C、随着定时器的创建,将调度控制模块中对应的空闲队列长度值相应递减;同时, 随着定时器的到期,这个值又相应递增。本专利技术中,每次创建定时器的时候,直接从空闲队列头分配定时器控制块给定时器使用。本专利技术中,占用定时器队列为控制正在使用中的定时器的数据结构;所有占用定时器的集合组成占用定时器队列。本专利技术中,还包括系统时钟系统会每隔若干秒重新读取一下系统时间保存到全局变量中;将软件时钟和硬件时钟的同步。本专利技术中,管理方法还包括时钟纠偏,它包括以下步骤定时器控制模块在每经过若干秒的软件时钟后,比较系统时差;当系统时差小于软件时差时,增加每个定时器时钟滴答tick的长度,增加的尺度与软件时差、系统时差之间的差值相匹配;反之, 当系统时差大于软件时差时,减小每个定时器时钟tick的长度。,减小的尺度与软件时差、系统时差之间的差值相匹配。本专利技术中,三种定时器包括同步延时定时器、相对定时定时器和绝对定时定时器。本专利技术的有益效果一、提供多数量进程间实时通讯时提供精确时钟功能。二、提供多数量进程间实时通讯时提供可靠时钟定时功能。附图说明图1定时器控制队列示意图。图2调度控制结构示意图。图3刚初始化后调度控制结构和定时器控制队列的对照关系图。图4创建了一定数量的定时器后调度控制结构与定时器控制块状态图。图5有部分定时器退出后调度控制结构与定时器控制块状态图。具体实施例方式下面结合附图和实例对本专利技术作进一步的说明。时钟模块要提供定时器功能,首先必须提供一个时钟tick,也叫软时钟中断周期, 该周期可以根据定时器精度设置,如当前要提供精度为0. 1秒的定时器(相对定时和同步延时),那么这个中断周期的精度就可以设置为0. 1秒。显然,由于绝对定时精度为1秒,这个中断周期完全适用绝对定时,每这种周期的10次循环正好是绝对定时的一个时钟tick。 其次,为实现三种定时,必须设计一种合理的数据结构,该数据结构应当包括存储每个定时器信息的结构,称为定时器控制块,所有定时器控制块的集合组成定时器控制队列用来记录空闲定时器控制队列头和长度的结构,称为调度控制结构控制正在使用中的定时器的数据结构,称为占用定时器,所有占用定时器的集合组成占用定时器队列时钟初始化时钟模块在系统启动将创建定时器控制队列、调度控制结构和占用定时器队列等时钟模块中用到的主要数据结构,并将各数据结构初始化。定时器控制池目前时钟模块共提供了 20000个定时器控制块(该值通过宏TMCB_NUM定义在头文件里)。时钟模块启动时,就将这两万个控制块进行初始化生成一个简单的空闲定时器控制池,如图1所示。当需要创建定时器时,就从这个定时器控制池中取出一个空闲元素给定时器使用,另外,三种定时器公用这个队列,对该队列元素的分配和调度则由一个称为调度控制结构的数据结构进行控制。调度控制结构调度控制结构也是在时钟模块启动时进行初始化的,调度控制结构中记录空闲队列头、空闲队列长度,空闲队 列元素等重要信息。时钟模块初始化后的调度控制结构和定时器控制队列的关系如图2所示。调度控制结构count成员代表当前空闲定时控制队列的长度,时钟模块初始化时这个值显然就等于TMCB_NUM,随着定时器的创建,这个值不断递减,而随着定时器的到期,这个值又不断递增,所以它始终代表当前空闲定时器控制块的数量。调度控制结构head成员则记录空闲定时控制器队列头位置,这样,每次创建定时器的时候,就可以直接从该位置分配定时器控制块给定时器使用。调度控制结构tail 成员,记录空闲定时队列尾的位置,时钟模块初始化时设置为1,当某个定时器到达时,将 TMCBPool- > ele 成员指向该释放的定时器控制块,这样就实现了空闲定时队列的真正循环队列。调度控制结构ele数组成员则是定时器控制循环队列的一个全集,从TMCBPool- > head位置开始到TMCBPool- > tail位置结束中间指向的任一个定时器控制块则都是空闲定时器控制块,可以直接分配给定时器使用。图3、4、5分别记录了不同时刻调度控制队列的状态以及跟定时器控制队列的对照关系。(绿色约定为可分配定时器控制块,红色约定为已占用定时器控制块)占用定时器队列占用定时器队列共创建了 31个双向循环队列来管理所有正在使用的定时器,当时钟模块启动时,这31个占用定时队列将被初始化。三种定时器的实现一、同步延时定时器同步延时是为了实现< 1秒或大于1000秒的定时器,这种类型的定时器将使用 Tque 的占用定时队列,该定时器设计原理是该队列中的定时器是以将到达的先后顺序进行排序的(最先要到达的定时器排在最前面,依次类推),这样,每设置一个定时器,将从队列头开始与队列中每个定时器将要到达的时长比较,直到找到定时时长比该新设定时器时长长的元素为止,然后将新设定时器插入到该元素之前。(1)定时器设置这种定时器设置的数学模型是这样的假设Tque 队列中目前存在η个定时器(Tque . count = η),组成如下队列权利要求1.,其特征是它包括以下步骤A、将多个定时器控制模块进行初始化生成一个空闲定时器控制池,多个定时器控制模块构成定时器控制队列,建立调度控制模块和占用定时器队列,并将各数据结构初始化,调度控制模块中记录定时器控制队列的空闲队列头、空闲队列长度,空闲队列元素;B、创建定时器时,从定时器控制池中取出一个空闲元素给定时器使用,另外,三种定时器公用这个队列;C、随着定时器的创建,将调度控制模块中对应的空闲队列长度值相应递减;同时,随着定时器的到期,这个值又相应递增。2.根本文档来自技高网...

【技术保护点】
1.一种通讯平台的精确时钟管理方法,其特征是它包括以下步骤:A、将多个定时器控制模块进行初始化生成一个空闲定时器控制池,多个定时器控制模块构成定时器控制队列,建立调度控制模块和占用定时器队列,并将各数据结构初始化,调度控制模块中记录定时器控制队列的空闲队列头、空闲队列长度,空闲队列元素;B、创建定时器时,从定时器控制池中取出一个空闲元素给定时器使用,另外,三种定时器公用这个队列;C、随着定时器的创建,将调度控制模块中对应的空闲队列长度值相应递减;同时,随着定时器的到期,这个值又相应递增。

【技术特征摘要】

【专利技术属性】
技术研发人员:邓钢曹阳周中克
申请(专利权)人:南京中兴软创科技股份有限公司
类型:发明
国别省市:84

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

1