一种高精度时钟辅助任务执行的方法

文档序号:9396754阅读:437来源:国知局
一种高精度时钟辅助任务执行的方法
【技术领域】
[0001]本发明属于计算机技术领域,尤其涉及一种高精度时钟辅助任务执行的方法。
【背景技术】
[0002]多任务处理的操作系统中,每一个任务的执行与调度是依靠任务优先级以及中央处理器(Central processing unit,CPU)时间片轮转等算法进行的。目前的任务执行与调度方法,都是任务获得CPU资源,然后辅以时间片轮转,任务优先级,或两者结合等技术方案,让任务在规划的模式下运行。时间片轮转,任务在执行过程中时间到了,任务要挂起,换其他任务执行。任务优先级,尚优先级任务进来会打断低优先级任务执行。当任务需要连续执行时,它需要关闭掉系统中断,禁止优先级抢占。这样虽然满足了大部分的需求,但是遇到某些任务的某些处理需要快速,高效的,连续的执行时,目前的系统无非是关闭中断,或者禁止优先级抢占等措施。这样做的不足是:关闭中断,在某种程度上降低了系统的运行效率,毕竟中断是系统中级别最高的任务,如果关闭了它,系统中如果有其他更重要的中断需要处理,在此时系统是无法处理的。这就降低了系统的稳定性。同样,禁止优先级抢占,无非也是在任务优先级层面能够保证任务的某些处理过程能够连贯执行,它无法禁止中断的打断,也无法禁止时间片到期时任务执行的切换。因此会对系统的流畅运行带来一定影响。

【发明内容】

[0003]本发明所要解决的技术问题在于提供一种高精度时钟辅助任务执行的方法,旨在有效提升系统的中断响应速度和执行效率,让系统运行地更加流畅。
[0004]本发明是这样实现的,一种高精度时钟辅助任务执行的方法,其包括构建一个中断服务公共链表的步骤、任务执行的步骤及高精度时钟中断服务的步骤;其中,该中断服务公共链表的结构包括子任务的程序地址;该任务执行的步骤包括如下子步骤:任务中若有需要请求高精度时钟中断服务的子任务,则构建子任务信息;检测该中断服务公共链表是否加锁,若加锁,继续等待并检测,直到解锁;将该中断服务公共链表加锁,将子任务信息加入到该中断服务公共链表中,然后将该中断服务公共链表解锁;及等到该子任务执行完成后加锁该中断服务公共链表,然后删除该子任务信息,并将该中断服务公共链表解锁;高精度时钟中断服务包括如下子步骤:当产生时钟中断后,高精度时钟中断服务模块关闭该时钟中断;检测该中断服务公共链表是否加锁;若没有加锁,则加锁并访问该中断服务公共链表,根据该子任务的程序地址执行该子任务;及该子任务执行完毕后,将该中断服务公共链表解锁,清除时钟中断标志,打开时钟中断,等待下次时钟中断的到来。
[0005]本发明与现有技术相比,有益效果在于:该高精度时钟辅助任务执行的方法能有效提升系统的中断响应速度和执行效率,让系统运行地更加流畅。
【附图说明】
[0006]图1是本发明实施例提供的高精度时钟辅助任务执行的方法的示意图。
[0007]图2是图1的高精度时钟辅助任务执行的方法的中断服务公共链表的示意图。
[0008]图3是图1的高精度时钟辅助任务执行的方法的任务A执行部分的流程图。
[0009]图4是图1的高精度时钟辅助任务执行的方法的高精度时钟中断服务部分的流程图。
【具体实施方式】
[0010]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
[0011]如图1所示,本发明实施例提供的高精度时钟辅助任务执行的方法,其包括相互配合的两个部分,第一部分是任务A执行,第二部分是高精度时钟中断服务,同时还需要一个可公共访问的内存区域,将所需要处理的子任务信息加入进去,即得到一个中断服务公共链表。如图2所示,该中断服务公共链表的结构包括子任务的程序地址、参数个数、参数区、返回数据区及执行完成标志。该中断服务公共链表以先到先服务的方式使用,也就是说,该中断服务公共链表中的子程序按照请求高精度时钟中断服务的先后顺序依次排列,然后在执行高精度时钟中断服务时按照该子程序排列的先后顺序依次进行。
[0012]任务A在执行过程中,有需要提升执行等级,不被其他时间片或任务打断的子任务(即需要请求高精度时钟中断服务的子任务)时,将该子任务的信息加入到该中断服务公共链表中。然后,任务A解锁该中断服务公共链表,以便其他任务或时钟中断服务模块能够访问该可公共访问的内存区域。任务A解锁该中断服务公共链表后,等待其加入的子任务被执行,检测到执行完成标志设置为“ I”后,则再次加锁访问该中断服务公共链表,若有返回数据,则取出该返回数据后,将该中断服务公共链表中的该子任务信息删除,表示该子任务完成了。解锁该中断服务公共链表后,任务A结束了其使用该高精度时钟中断服务。
[0013]高精度时钟能够根据需要配置时钟中断产生间隔。当需要快速处理各任务加入进来的子任务时,能够将时钟中断间隔设置的短一些。高精度时钟中断服务过程为:当产生时钟中断后,高精度时钟中断服务模块关闭该时钟中断,然后检查该中断服务公共链表是否加锁,若加锁,说明有任务在向该中断服务公共链表中加入信息或删除信息,该中断服务公共链表有变动,所以取消此次高精度时钟中断服务。如果该中断服务公共链表没加锁,则加锁访问该中断服务公共链表。从该中断服务公共链表中获取排列在最前面的一个子任务,然后执行该子任务,当该子任务执行完毕,如有返回值将返回值放入该返回数据区,将执行完成标志设置为“ I”,表明该子任务执行完毕。最后,解锁该中断服务公共链表,清除时钟中断状态,打开时钟中断,等待下次的中断到来。
[0014]该高精度时钟辅助任务执行的方法包括如下步骤:
[0015]S1:构建一个中断服务公共链表,该中断服务公共链表的结构包括子任务的程序地址、参数个数、参数区、返回数据区及执行完成标志。该中断服务公共链表以先到先服务的方式使用,也就是说,该中断服务公共链表中的子程序按照请求高精度时钟中断服务的先后顺序依次排列,然后在执行高精度时钟中断服务时按照该子程序排列的先后顺序依次进行。
[0016]S2:任务A执行的步骤,其包括如下子步骤(如图3所示):
[0017]S21:任务A若有需要提升执行等级,不被其他时间片或任务打断的子任务,也就是说,任务A中若需要请求高精度时钟中断服务的子任务,则构建如该中断服务公共链表的结构的
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1