[发明专利]一种基于Alarm的调度表实现方法无效
申请号: | 201010186875.7 | 申请日: | 2010-05-28 |
公开(公告)号: | CN101833478A | 公开(公告)日: | 2010-09-15 |
发明(设计)人: | 李红;吴朝晖;王铸;张成硕;周丽 | 申请(专利权)人: | 浙江大学 |
主分类号: | G06F9/48 | 分类号: | G06F9/48 |
代理公司: | 杭州裕阳专利事务所(普通合伙) 33221 | 代理人: | 江助菊 |
地址: | 310027 浙*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 alarm 调度 实现 方法 | ||
技术领域
本发明涉及操作系统任务调度方法技术领域,特别涉及操作系统的任务调度机制,是一种基于Alarm的调度表实现方法。
背景技术
Alarm(警报,或是闹钟)是处理操作系统中重复事件的一种现有机制。比如计时器重复产生中断,或者译码器在转轴转动了一个角度产生一个中断,这些事件被特殊的计时器记录,Alarm的实现就是基于计时器的。一个Alarm与一个计时器关联,但是一个计时器可以关联多个Alarm。每个Alarm中有一个到期时间,当一个Alarm到达用户配置好的时间点,就会处理用户配置的事件,比如激活任务、为任务设置事件、调用回调函数或者增加计时器的当前计数值。而且一个Alarm到期只能做这四种事件当中的一件。
调度表是操作系统中一种基于时间触发的任务调度方式,系统运行时根据调度表的配置来调度任务。用户根据时间约束指定每个任务、事件的激活时刻并以调度表的形式进行配置。在一个调度表上会有一个或多个EP(Expiry Point,到期点,终止点),每个EP点完成的事情是激活任务或者设置事件,而且,在一个EP点可以同时激活多个任务和设置多个事件。调度表的结构如图1所示。调度表的运行时间称为持续时间(Duration),调度表上有一些EP点,每个EP点在调度表上有一个Offset,也就是EP点在调度表上的偏移量,其是由用户定义的,当然,这个Offset的值不能超过它所在调度表的Duration。第一个EP点距离调度表起始端的距离称为InitialOffset,最后一个EP点距离调度表末端的距离称为FinalDelay。每个调度表至少包含一个EP点。EP点的内容可以是激活任务或者设置事件。
综上,一个Alarm只能激活一个任务或者设置一个事件,且其运行时间间隔是固定的;而在操作系统(OS)中实现调度表是势在必行的,调度表上的一个EP点就需要同时激活多个任务和设置多个事件,并且一个调度表可能会有多个EP点,其运行时间间隔需要灵活调整。所以,如何很好地解决Alarm与调度表的融合这一技术问题,成为本领域技术人员函待解决的技术难题。
发明内容
本发明的目标是设计一种方法,其能够基于Alarm实现调度表,该方法包括如下步骤:
1)调度表开始运行,特殊Alarm将到期时间设置成第一个EP点的执行时间;
2)特殊Alarm到期,激活EP点,EP点开始执行;特殊Alarm将到期时间设置成下一个EP点的执行时间,按照EP点的偏移量顺序往后执行;
3)当执行完最后一个EP点,操作系统会判断调度表是否是重复执行的;如果是重复执行的,特殊Alarm将到期时间设置成第一个EP点的执行时间,调度表从头开始运行;
4)如果不是重复执行的,操作系统会判断是否存在下一个调度表,如果存在,则将特殊Alarm的到期时间设置成下一个调度表的第一个EP点的执行时间,当前调度表执行完之后,下一个调度表开始执行;
5)如果不存在下一个调度表,则该调度表运行结束。
优选地,所述的特殊Alarm的数据结构中包括Alarm指向计时器的指针。
优选地,所述的特殊Alarm的数据结构中包括下一个触发点的tick值(跳动点)。
优选地,所述的特殊Alarm的数据结构中包括关联的调度表id(标识)。
本发明还公开了一种将EP点插入到计时器、以便在操作系统中实施基于Alarm实现调度表的方法,其特征在于,具体包括以下步骤:
1计时器向前运行;
2与计时器对应的Alarm链表的链表头的Alarm到期;
3操作系统判断到期的Alarm类型;
4如果是通用Alarm,则处理Alarm中的事情;
5如果是特殊Alarm,就会激活Alarm对应的EP点,进入到EP点的执行过程;
6然后判断执行的EP点在其对应的调度表上是否存在下一个EP点;
7如果存在,则将Alarm的到期时间变成下一个EP点的执行时间,然后按照到期时间插入到计时器的链表中;
8如果是调度表上的最后一个EP点,这时会判断调度表是否重复执行;
9如果是重复执行的,则将Alarm的到期时间变成第一个EP点的执行时间,并且按照到期时间插入到对应的链表中;
10如果不是重复执行的,操作系统会判断是否存在下一个调度表;
11如果存在下一个调度表,则将Alarm的到期时间变成下一个调度表的第一个EP点的执行时间,并且按照到期时间插入到链表中;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江大学,未经浙江大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201010186875.7/2.html,转载请声明来源钻瓜专利网。