一种提高计算机内核定时器控制精度的方法

文档序号:6460820阅读:108来源:国知局
专利名称:一种提高计算机内核定时器控制精度的方法
技术领域
本发明涉及一种提高计算机内核定时器控制精度的方法,特别是一种 基于原计算机系统对高精度定时事件进行处理的方法。
背景技术
操作系统是管理计算机或嵌入式平台的硬件与软件资源的程序, 同时也是应用程序运行的基础。操作系统是一个大型管理控制程序, 其作用是使系统中所有资源按照确立好的时序最大限度的地发挥作 用,为用户提供方便有效的服务界面。其中内核定时器是通用操作系 统内核管理时间的基础,其作用是使内核任务在指定的时间点上执行。 使用定时器需要设置定时处理函数并预先设置一个超时时间,定时器 被激活后,所指定的定时处理函数将在到期时自动执行。标准内核定 时器容易受到内核节拍计时器、硬件中断、其他定时器和异步任务的 影响。特别是由于标准内核定时器优先级低于硬中断,因此只有当所 有被挂起的硬中断服务程序执行完毕后,内核定时器才能得到执行, 在最坏的情况下,定时服务完全有可能会被推迟1个乃至数个系统节 拍。鉴于以上无法克服的缺陷,目前常用的计算机通用操作系统中内 核不能满足严格的定时应用,更不能应用于需要较高精度定时的场合。 特别是具体的应用过程中,标准内核的系统节拍响应工作非常繁重。这些 工作通常包括更新系统产生的节拍总数、更新系统运行时间与实际时间、执行任务调度、均衡各运行队列、更新资源消耗和处理器时间的统计值、 执行超时的动态定时器以及计算平均负载值等等。用简单提高内核的节拍 率会导致系统频繁执行上述多项响应工作,从而使系统负载迅速增加,进
而会显著降低系统性能。因此目前主流操作系统,如UNIX/Linux、 WinCE, 的内核时钟节拍率也仅仅仅设定在50Hz到1000Hz。然而局限在此范围的节 拍率并不能保证内核定时器的精度定时任务的完成。此外,定时稳定性受 硬件IO负荷影响十分明显。由于普通内核定时器所使用的软中断在中断体 系中所处的级别较低,必须等待所有挂起的高级别硬中断执行完毕后才能 得到执行,而系统在迸行硬件数据读写时往往会产生大量硬件中断,因此 在硬件10负荷很大的系统中,标准内核定时器的稳定性难以得到保证的, 对于高精度的定时任务执行则显然是无从说起。
对于内核定时器目前所存在的问题的改进方案中,有些方案虽然不是 专门针对定时器的改进方案,但也能够不同程度提高定时的精度。其中包 括①附加微型内核为了提供硬实时的支持,附加一个实时微内核,而 将普通操作系统作为一个该微内核的一个低优先级的任务来运行。普通系 统中的任务可以通过FIFO和实时任务进行通信。该方案的典型实例为 RT-Linux。该方案的缺点在于需要增加一个微型内核,并且需要保持微型 内核和普通内核之间的通信,其跨平台实施复杂度高,较难实现。而且该 方案只是在微型内核中实现了实时特性,并没有提高普通操作系统的定时 器性能。2.将时钟芯片设置为单次触发状态(One shot mode)其基本思想 是将时钟芯片设置为单次触发状态,即每次给时钟芯片设置一个超时时 间,然后到该超时事件发生时在时钟中断处理程序中再次根据需要设置一个超时时间。它利用CPU的时钟计数器来提供理论上可达CPU主频的定时 精度。该方案的典型实例有Kurt-Linux和Monta Vista Linux。该方案的 缺点在于需要频繁地计算并设置时钟芯片的超时时间和修正累积误差,并 且其算法本身运行所占用的时间会对定时效果产生负面影响,事实上很难 达到其标称的定时精度。3.使用额外硬件定时器其运用系统额外硬件定 时器完成高精度定时。显然该方案的局限性在于要求目标平台拥有至少一 个空闲的硬件定时器,且该方案实际上也属于一种单次触发时钟方案,同 样有上述方案2所存在的缺点。4.采用计数器采用系统节拍为计数单位, 通过附加程序计数并触发定时器。该方案主要目的是以计数代替计时来降 低周期性定时的开销,并没有改进定时器精度。

发明内容
本发明的目的是在不增加任何硬件设施的前提下,提供一种在计算机 操作系统的基础节拍基础上下,实现对髙精度定时任务管理的方法。
本发明的基本构思是该方法是在预置的系统定时硬件时钟和定时粒度 的基础上,在配套内核定时器执行程序的支持下实现的,包括以下步骤
① 根据具体目标平台和应用环境决定定时粒度,
② 解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑 定关系,
③ 根据步骤1所确定的定时精度值,在系统初始化时刻对定时硬件进 行设置,从而提升系统定时硬件时钟的节拍率,
在定时硬件时钟中断入口处插入新代码,其中包括维护本方案定 时体系自有的定时信息的代码,根据所维护的定时信息判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代 码。
⑤重新编译并加载内核,使以上步骤2、 3、 4所做的修改生效, 重复执行④、⑤步骤。
由于本方法的技术方案解除了系统定时硬件时钟与操作系统时钟中断 服务程序的绑定关系,进一步细化了硬件时钟的定时粒度,并且在定时硬 件中断服务程序实现了新的定时体系。这个新的定时体系直接使用系统定
时硬件产生的周期性中断作为计时源,其主要作用包括维护自有的定时 信息、执行超时任务和维持操作系统节拍。关于定时粒度的最优值,应该 根据具体目标平台和应用环境制定出一个大概的范围,然后通过具体试验 对定时粒度进行微调来确定。具体的步骤可以重复执行以上步骤。这样, 可以有效的提高定时的精度又明显的优于现行的改进技术方案。由于内核 定时体系直接使用系统定时硬件所产生的周期性中断计时,而不是根据操 作系统节拍计时,操作系统节拍由内核定时体系产生,而不是直接由系统 定时硬件产生。这样以来系统定时硬件产生的是周期性触发中断,而不是 单次触发中断。用户仅需对定时硬件进行一次设置就可以实现定时精度和 操作系统节拍率彼此独立,并维持原操作系统节拍率不变。从而,既提高 了定时精度、又没有过多的增加系统的负担、又能保证系统时序的稳定性。


图1是系统定时硬件中断入口处新增代码的流程图。 其中虚线是标准内核中断服务程序的执行路径。
具体实施方式
参照附图1可以清楚的看出以上在发明内容一节中陈述实现本发明目 的的具体步骤④中,在定时硬件时钟中断入口处插入新代码所决定的执行 步骤为
① 进入系统硬件定时中断程序并按照已经提高的硬件定时频率继续进 行定时器计时,
② 比对所维护的定时信息中是否有定时任务到期,
③ 没有定时任务到期直接核查、或有定时任务到期并发出对应的"某 任务定时到"信息代码后核查原系统中断节拍是否到时,
④ 原系统中断节拍没有到时直接转至步骤①、硬件定时中断快速返回, 如原系统中断节拍到时转至下一个操作系统时钟中断程序节拍,执行原系 统中断程序快速返回。
可见,实施以上的姬鼠放案后在原操作系统的一个固有节拍中,可以 不受任何干扰的实现内核定时器的独立计时和按照所精确设定的频率准确 的把握定时精度、启动超时函数的运算、进行定时任务的管理。只要预先 设置准确的定时粒度,就可以实现本发明目的。
为了实现定时粒度的最优话,显然是应该根据具体目标平台和应用环 境制定出一个大概的范围,然后通过具体试验对定时粒度进行再进行微调 来最后确定。
以上的技术改进反映在本发明具体的步骤中是提高计算机内核定时 器控制精度的方法的步骤①-⑤还包括
⑥通过具体试验对定时粒度进行进一步微调,调整后重新执行步骤2、 步骤3和步骤5。下面进一步给出以上具体步骤①中根据具体目标平台和应用环境决定 定时粒度的具体步骤为
① 设置一个硬件时钟中断频率提高倍数大于1的代码ET
② 将原操作系统节拍率赋值给代码jif,系统外围频率为赋值给代码 pclk,定时硬件时钟倍频赋值给代码mult,系统定时硬件分频赋值给代码 divi,那么计算系统定时硬件周期寄存器值PERIOD的按照以下的计算方法 获得-
PERI0D= (pclk*mult) /(jif*divi*ET)
③ 借助以上计算结果决定内核定时器的定时粒度。 步骤①中的硬件时钟中断频率提高倍数是10-100。 与已有方案相比的明显的技术效果在于
使用简单易行的方法,在不造成系统过载的情况下实现了具备较高精 度和较好稳定性的内核定时器。本方法以较小的开销,实测单次定时开销
约为内核节拍开销的1/8,实现了精度较现有系统定时器精度提高10倍以 上的内核定时器。在一般平台上可达到小于100us的定时精度。定时器具有 较好的稳定性,基本不受硬件IO负荷影响,无累积误差。对内核修改小。 只需修改硬件时钟节拍并插入一段处理程序,不需要附加微型内核和额外 的硬件定时器,也不需要频繁重设硬件定时器计数值。维持了标准系统节 拍和特性,保持了与原系统之间的一致性,便于应用。
本方案所能达到的极限定时精度不能小于定时处理函数的执行时间和 具体环境下的最长全局中断关闭时间,否则会丢失硬件定时节拍,从而影
响定时精度。由于在本方案中定时器在高级别硬件中断中运行,这意味着定时处理函数会在执行期间独占系统,因此要求定时处理程序应尽可能的 简洁快速,以免过度消耗系统资源。
权利要求
1、一种提高计算机内核定时器控制精度的方法,该方法是在预置的系统定时硬件时钟和定时粒度的基础上,在配套执行程序的支持下实现的,其特征在于该方法包括以下步骤①根据具体目标平台和应用环境决定定时粒度,②解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑定关系,③根据步骤1所确定的定时精度值,在系统初始化时刻对定时硬件进行设置,从而提升系统定时硬件时钟的节拍率,④在定时硬件时钟中断入口处插入新代码,其中包括维护本方案定时体系自有的定时信息的代码,根据所维护的定时信息判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代码,⑤重新编译并加载内核,使以上步骤2、3、4所做的修改生效,重复执行④、⑤步骤。
2、 根据权利要求l所述的提高计算机内核定时器控制精度的方法,其 特征在于步骤④在定时硬件时钟中断入口处插入新代码所决定的执行步骤为① 进入系统硬件定时中断程序并按照已经提高的硬件定时频率继续进 行定时器计时,② 比对所维护的定时信息中是否有定时任务到期,③ 没有定时任务到期直接核查、或有定时任务到期并发出对应的"某 任务定时到"信息代码后,核查原系统中断节拍是否到时,④ 原系统中断节拍没有到时直接转至步骤①、硬件定时中断快速返回, 如原系统中断节拍到时转至下一个操作系统时钟中断程序节拍,执行原系 统中断程序快速返回。
3、 根据权利要求l所述的提高计算机内核定时器控制精度的方法,其特征在于提高计算机内核定时器控制精度的方法的步骤①-⑤还包括⑥通过具体试验对定时粒度进行进一步微调,调整后重新执行步骤2、步骤3和步骤5。
4、 根据权利要求l所述的提高计算机内核定时器控制精度的方法,其 特征在于步骤①中根据具体目标平台和应用环境决定定时粒度的具体步骤为① 设置一个硬件时钟中断频率提高倍数大于1的代码ET② 将原操作系统节拍率赋值给代码jif,系统外围频率为赋值给代码 pclk,定时硬件时钟倍频赋值给代码mult,系统定时硬件分频赋值给代码 divi,那么计算系统定时硬件周期寄存器值PERIOD的按照以下的计算方法 获得PERI0D= (pclk顿lt) /(jif*divi*ET)③ 借助以上计算结果决定内核定时器的定时粒度。
5、 根据权利要求4所述的提高计算机内核定时器控制精度的方法,其 特征在于步骤①中的硬件时钟中断频率提高倍数是10-100。
全文摘要
本发明是一种提高计算机内核定时器控制精度的方法。该方法是在预置的系统定时硬件时钟和定时粒度的基础上,在配套内核定时器执行程序的支持下实现的,包括以下步骤①根据具体目标平台和应用环境决定定时粒度,②解除系统定时硬件时钟中断与操作系统节拍中断服务程序之间的绑定关系,③根据步骤1所确定的定时精度值,在系统初始化时刻对定时硬件进行设置,④在定时硬件时钟中断入口处插入新代码维护自有的定时信息的代码,判定是否有定时器超时并执行超时函数的代码,按系统原节拍率维持操作系统节拍中断的代码。⑤重新编译并加载内核,使以上步骤2、3、4所做的修改生效,重复执行④、⑤步骤。
文档编号G06F9/46GK101299193SQ20081006641
公开日2008年11月5日 申请日期2008年4月7日 优先权日2008年4月7日
发明者谢维信, 赵汝聪, 黄建军, 黄敬雄 申请人:谢维信
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1