法律状态公告日
法律状态信息
法律状态
2017-05-24
未缴年费专利权终止 IPC(主分类):G06F9/46 授权公告日:20100224 终止日期:20160407 申请日:20080407
专利权的终止
2010-02-24
授权
授权
2008-12-31
实质审查的生效
实质审查的生效
2008-11-05
公开
公开
技术领域
本发明涉及一种提高计算机内核定时器控制精度的方法,特别是一种基于原计算机系统对高精度定时事件进行处理的方法。
背景技术
操作系统是管理计算机或嵌入式平台的硬件与软件资源的程序,同时也是应用程序运行的基础。操作系统是一个大型管理控制程序,其作用是使系统中所有资源按照确立好的时序最大限度的地发挥作用,为用户提供方便有效的服务界面。其中内核定时器是通用操作系统内核管理时间的基础,其作用是使内核任务在指定的时间点上执行。使用定时器需要设置定时处理函数并预先设置一个超时时间,定时器被激活后,所指定的定时处理函数将在到期时自动执行。标准内核定时器容易受到内核节拍计时器、硬件中断、其他定时器和异步任务的影响。特别是由于标准内核定时器优先级低于硬中断,因此只有当所有被挂起的硬中断服务程序执行完毕后,内核定时器才能得到执行,在最坏的情况下,定时服务完全有可能会被推迟1个乃至数个系统节拍。鉴于以上无法克服的缺陷,目前常用的计算机通用操作系统中内核不能满足严格的定时应用,更不能应用于需要较高精度定时的场合。特别是具体的应用过程中,标准内核的系统节拍响应工作非常繁重。这些工作通常包括:更新系统产生的节拍总数、更新系统运行时间与实际时间、执行任务调度、均衡各运行队列、更新资源消耗和处理器时间的统计值、执行超时的动态定时器以及计算平均负载值等等。用简单提高内核的节拍率会导致系统频繁执行上述多项响应工作,从而使系统负载迅速增加,进而会显著降低系统性能。因此目前主流操作系统,如UNIX/Linux、WinCE,的内核时钟节拍率也仅仅仅设定在50Hz到1000Hz。然而局限在此范围的节拍率并不能保证内核定时器的精度定时任务的完成。此外,定时稳定性受硬件IO负荷影响十分明显。由于普通内核定时器所使用的软中断在中断体系中所处的级别较低,必须等待所有挂起的高级别硬中断执行完毕后才能得到执行,而系统在进行硬件数据读写时往往会产生大量硬件中断,因此在硬件IO负荷很大的系统中,标准内核定时器的稳定性难以得到保证的,对于高精度的定时任务执行则显然是无从说起。
对于内核定时器目前所存在的问题的改进方案中,有些方案虽然不是专门针对定时器的改进方案,但也能够不同程度提高定时的精度。其中包括:①附加微型内核:为了提供硬实时的支持,附加一个实时微内核,而将普通操作系统作为一个该微内核的一个低优先级的任务来运行。普通系统中的任务可以通过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的按照以下的计算方法获得:
PERIOD=(pclk*mult)/(jif*divi*ET)
③借助以上计算结果决定内核定时器的定时粒度。
步骤①中的硬件时钟中断频率提高倍数是10-100。
与已有方案相比的明显的技术效果在于:
使用简单易行的方法,在不造成系统过载的情况下实现了具备较高精度和较好稳定性的内核定时器。本方法以较小的开销,实测单次定时开销约为内核节拍开销的1/8,实现了精度较现有系统定时器精度提高10倍以上的内核定时器。在一般平台上可达到小于100us的定时精度。定时器具有较好的稳定性,基本不受硬件IO负荷影响,无累积误差。对内核修改小。只需修改硬件时钟节拍并插入一段处理程序,不需要附加微型内核和额外的硬件定时器,也不需要频繁重设硬件定时器计数值。维持了标准系统节拍和特性,保持了与原系统之间的一致性,便于应用。
本方案所能达到的极限定时精度不能小于定时处理函数的执行时间和具体环境下的最长全局中断关闭时间,否则会丢失硬件定时节拍,从而影响定时精度。由于在本方案中定时器在高级别硬件中断中运行,这意味着定时处理函数会在执行期间独占系统,因此要求定时处理程序应尽可能的简洁快速,以免过度消耗系统资源。
机译: 一种提高太阳系空间飞行控制精度的方法,涉及利用各向同性微波背景辐射部分三维空间的上行信号和下行信号,按照特定的公式
机译: 一种提高DSP内核性能/功率比的方法
机译: 一种计算机实现的方法,一种计算机程序产品以及一种嵌入式系统,用于通过嵌入式系统上的客户端来提高数据检索的速度