本发明专利技术涉及操作系统的任务调度机制,属于操作系统任务调度方法技术领域,特指一种基于Alarm的调度表实现方法,其特点是在现有通用Alarm的基础上设计一种特殊Alarm,并基于此设计实现调度表的方法,基于通用Alarm和特殊Alarm设计在操作系统中的EP点插入方法;与现有技术相比,其能够一次激活多个任务,运行时间间隔更加灵活,应用前景十分广阔。
【技术实现步骤摘要】
本专利技术涉及操作系统任务调度方法
,特别涉及操作系统的任务调度机 制,是。
技术介绍
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 点的执行时间,并且按照到期时间插入到链表中;12如果不存在下一个调度表,那么从链表中删除这个Alarm。优选地,步骤4中所述的处理Alarm中的事情是指,调用回调函数、激活任务或者 设置事件。优选地,步骤4中所述的处理Alarm中的事情是指,每次只能处理Alarm中的一件事情。优选地,所述特殊Alarm与通用Alarm相互独立。本专利技术与现有的方法相比,具备以下优点1. 一次可以激活多个任务,处理的事 情更多;2.运行时间间隔更加灵活。附图说明图1 传统的调度表的结构图;图2本专利技术中的调度表运行流程图;图3本专利技术在操作系统中的EP点插入流程图;图4本专利技术中的调度表配置图。具体实施例方式下面结合附图1-4,对本专利技术的基于Alarm的调度表实现方法作详细阐述。一个调度表对应一个Alarm和一个驱动计时器。调度表和它的对应的Alarm都 在这个驱动计时器上运行,也就是说,调度表运行的绝对时间就是它对应的驱动计时器上 指示的时间。还有,调度表对应的Alarm是特殊的Alarm,而不是普通的Alarm。为了方便 说明,这里将普通的Alarm表示为Alarm (norm),命名为通用Alarm ;特殊的Alarm表示为 Alarm (special),命名为特殊 Alarm。 Alarm (norm)可以做的事情是调用回调函数,激活任务或者设置事件。但是每次 只能激活一个任务或者设置一个事件。我们实现的调度表是基于Alarm(SpeciaI)而实现 的,一次可以激活多个任务,同时为多个任务设置事件。这里的Alarm(Special)的作用区 别于Alarm (norm),是用来处理调度表中的EP点。当Alarm(Special)到期,就会激活一 个EP点,然后进入到EP点的执行中,而EP点中可能会激活多个任务和设置多个事件。这 样,Alarm(special)比Alarm(norm)能处理的事情更多。并且,Alarm (norm)是一次运行 的或者是周期性运行的。也就是说,Alarmfcorm)运行时间间隔是固定的。而调度表的 Alarm是根据调度表上的下一个EP点来确定下次运行时间,它的运行时间间隔并不是固定 的,较之Alarm (norm)更加灵活。Alarmfcorm)可以做的事情比较多,当它到期时,操作系 统需要判断它的作用;而Alarm(Special)的作用只有处理调度表。将Alarm(Special)从 Alarm (norm)中独立出来,能降低程序的耦合度。所以,调度表使用的是Alarm(Special), 而不是Alarm (norm)。Alarm(special)的数据结构说明如下表<table>table see original document page 5</column></row><table>表lAlarm(special)的数据结构调度表可以设置成一次执行或者重复执行,还可以设本文档来自技高网...
【技术保护点】
一种基于Alarm的调度表实现方法,其特征在于,具体包括以下步骤:1)调度表开始运行,特殊Alarm将到期时间设置成第一个EP点的执行时间;2)特殊Alarm到期,激活EP点,EP点开始执行;特殊Alarm将到期时间设置成下一个EP点的执行时间,按照EP点的偏移量顺序往后执行;3)当执行完最后一个EP点,操作系统会判断调度表是否是重复执行的;如果是重复执行的,特殊Alarm将到期时间设置成第一个EP点的执行时间,调度表从头开始运行;4)如果不是重复执行的,操作系统会判断是否存在下一个调度表,如果存在,则将特殊Alarm的到期时间设置成下一个调度表的第一个EP点的执行时间,当前调度表执行完之后,下一个调度表开始执行;5)如果不存在下一个调度表,则该调度表运行结束。
【技术特征摘要】
【专利技术属性】
技术研发人员:李红,吴朝晖,王铸,张成硕,周丽,
申请(专利权)人:浙江大学,
类型:发明
国别省市:86[中国|杭州]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。