专利名称:一种嵌入式实时操作系统的混合调度方法
技术领域:
本发明涉及嵌入式操作系统设计与实现技术领域,更具体地说,涉及一种嵌入式
实时操作系统的混合调度方法。
背景技术:
随着计算机技术的迅猛发展和互联网技术的广泛应用,嵌入式系统(Embedded System)发挥着越来越重要的作用,它被广泛应用于制造工业、过程控制、通信、仪器、仪表、 汽车、船舶、航空航天、军事装备、消费类产品等方面。嵌入式系统被定义为,以应用为中心, 以计算机技术为基础,软件硬件可裁减,适应应用系统对功能,可靠性,成本,体积,功耗等 严格要求的专用计算机系统。 正因为嵌入式系统的应用领域日益扩大,功能需求也逐渐增长,促使人们在嵌入 式系统中引入嵌入式操作系统。具有实时性的嵌入式操作系统就是嵌入式实时操作系统 (Embedded Real Time Operating System, ERTOS)。其操作的正确性不仅依赖于逻辑设计 的正确程度,而且跟这些操作进行的时间有关。也就是说,实时操作系统除了要满足应用的 功能需求以外,更重要的是还要满足应用提出的实时性要求。其首要任务是一定时间限制 下,调动一切可利用的资源在完成实时控制任务。嵌入式实时操作系统由于受到应用的需 要和硬件条件的限制,具有可固态化、体积小、高效、高可靠性、高实时性等特点。
嵌入式实时操作系统的实时性和多任务能力在很大程度上取决于它的任务调度 算法。从调度方式上来讲,可分为可抢占式调度和不可抢占式(即合作式)调度。
在抢占式(Preemptive)调度中,目前正在运行的任务可以被别的更紧迫和更重 要的任务中断。同时,被抢占的任务在未来可以恢复运行,且不会影响到任务的整体时限约 束。抢占式调度的优点是比较灵活,其任务级的响应时间得以最优化,资源的利用率比较 高,但由于经常出现的上下文切换(ContextSwitch)使得其系统开销较大,可预测性比较 低。 图1显示了两个不同优先级任务和一个中断服务程序(ISR, InterruptService
Routine)的抢占式调度的执行情况。首先,当低优先级的任务正在运行时,ISR抢占低优先
级任务进入运行态,它使一个更高优先级的任务进入就绪态,所以在ISR执行完成后,调度
器选择该高优先级任务进入运行,这样就推迟了恢复执行低优先级任务的操作。 MicroC/0S II以及大多数商业实时内核都采用抢占式调度,MicroC/OS II是当前
得到广泛应用免费且公开源码的嵌入式操作系统,它是基于优先级可抢占式多进程系统,
支持64个优先级,是一个非常典型的采用抢占式调度的嵌入式实时操作系统。 而非抢占式调度,即合作式(Cooperative)调度,不允许正在运行的任务被别的
任务中断,任务一旦占有了处理器便会一直运行直至完成。比较适合于任务运行时间都比
较短的系统。其优点是省去了进行上下文切换的开销,在任意时刻只有一个任务是活动的,
而且该任务运行直到完成,具有更好的可预测性,可靠性,更易于测试,但调度没有抢占式
调度那样灵活,对资源的利用率也相对较低。
图2显示了两个不同优先级任务和一个ISR的合作式调度的执行情况。首先,当 低优先级任务正在运行时,ISR抢占低优先级任务进入运行态,它使一个更高优先级的任务 进入就绪态,ISR执行完成后恢复被抢占的低优先级任务,直到该任务执行完毕后,调度器 才运行处于就绪态的高优先级任务。 Michael J. Pont提出一种时间触发的合作式(TTC,Time-TriggeredCooperative) 调度器。该调度器中,一个时钟节拍的时间间隔的数量级一般为毫秒(ms),嵌入式操作系 统的任务都可在一个时钟节拍的时间间隔内运行完毕。它由CPU定时计数器产生,系统每 经过一个时钟节拍的时间间隔,就产生一次时间溢出中断,中断服务程序检测此时是否有 任务处于就绪状态,若检测到则调用该任务。该合作式调度器实现简单,更具可靠性和安全 性。但是这种调度方式对外部事件的实时响应能力比较弱,而且调度方式没有抢占式调度 那样灵活,对资源的利用率也相对较低。 嵌入式系统中,存在两种本质上不同的任务触发方式事件触发和时间触发。事件 触发方式往往使用多级中断实现,其发生时间具有随机性;而时间触发方式则不同,它是通 过一个全局时钟进行驱动的,由于它在时间上和功能上都是确定的,因此其可预测性比较 高。两种不同的任务调度方式加上两种不同的任务触发方式,所以嵌入式系统,存在4种类 型的任务,分别是时间触发的合作式任务,时间触发的抢占式任务,事件触发的的合作式 任务和事件触发的的抢占式任务。 虽然Michael J. Pont提出的TTC调度器(时间触发的合作式调度)可以有效地 减少嵌入式系统中的任务抖动现象,可预测性高,实现简单,但是这种调度方式对外部事件 的实时响应能力比较弱,而且调度方式没有抢占式调度那样灵活,对资源的利用率也相对 较低。 采用抢占式调度方式的MicroC/OS II的实时响应能力比较理想,但不能在某个特 定时间内准确执行特定的任务,时间确定性较差,经常出现的上下文切换使得系统开销较 大,而且可预测性比较低,基于事件触发的抢占式调度器可靠性不如时间触发的合作式调度。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述缺陷,提供一种拥有时间触 发合作式调度系统的高可预测性和可靠性,也拥有事件触发抢占式调度系统的高实时响应 能力的嵌入式实时操作系统的混合调度方法。 为实现以上目的,本发明提供了一种嵌入式实时操作系统的混合调度方法,包括 任务调度前资源配置和任务调度,其中,所述任务调度包括以下步骤
通过事件触发或时间触发的方式使任务就绪; 根据就绪表和就绪组查找优先级判定表,获得当前就绪的最高任务优先级;
根据所述当前就绪的最高任务优先级,获得所述就绪的最高优先级任务的任务控 制块结构体,并判断该任务的类别; 当所述就绪的最高优先级任务是合作式任务时,执行该合作式任务,所述合作式 任务执行完毕后,清除其在就绪表和就绪组中的位置,再根据就绪表和就绪组查找优先级 判定表,获得当前就绪的最高任务优先级。
5
本发明所述的混合调度方法,其中,所述任务调度前资源配置具体包括如下步 骤 创建任务;建立任务控制块结构体;建立任务控制块地址数组;建立并初始化就 绪表和就绪组;建立并初始化位掩码表;建立并初始化优先级判定表;建立并初始化中断 优先级表;安装时钟节拍中断。 本发明所述的混合调度方法,其中,所述方法把中断程序以任务对待,并与其他任 务一起分配优先级。 本发明所述的混合调度方法,其中,所述使任务就绪具体包括 通过通信与同步机制或因中断使事件触发的任务就绪,或将时间触发的任务对应 的任务控制块中的延迟时间减1,当延迟时间减为0时,使所述时间触发的任务就绪。
本发明所述的混合调度方法,其中,所述使任务就绪具体是指 将就绪表中对应该任务优先级的位置为1,而且在就绪组中对应任务所在组的位 置为l。 本发明所述的混合调度方法,其中,所述方法还包括 执行时钟节拍中断程序时,检查正在运行的合作式任务是否被时钟节拍中断所中 断,是则根据用户需求选择处理选项,所述处理选项在创建任务时设置,其包括继续执行未 完成的任务,放弃执行未完成的任务或重新执行未完成的任务。
本发明所述的混合调度方法,其中,所述方法还包括以下步骤 在所述合作式任务执行完毕后,检查在所述合作式任务执行期间是否有中断事件 触发的任务请求执行,在有中断事件触发的任务请求执行时,使所请求的事件触发的任务 就绪。
本发明所述的混合调度方法,其中,所述检查是否有中断事件请求发生具体步骤是
软件查找在合作式任务运行过程中所发生的中断,利用所得到的中断源编号,在 所述中断优先级表中查找所对应的任务优先级,利用所得到的优先级使对应任务就绪。
本发明所述的混合调度方法,其中,所述方法还包括以下步骤 将所述检查中断事件的时间设置为固定时间,合作式任务执行完毕后,比较固定 时间与时钟节拍剩余间隔,若前者比较小,则执行该检查功能,否则放弃执行检查功能;
在执行该检查功能时,如果所述检查功能运行时间超过所述固定时间,立即执行 任务调度。 本发明所述的混合调度方法,其中,所述方法还包括以下步骤当就绪的最高优先 级任务是抢占式任务时,运行最高优先级的抢占式任务。 本发明的有益效果是,通过把ISR以任务对待,并与其他任务一起分配优先级,同 时复合利用时间触发与事件触发架构和采用抢占式与合作式任务混合调度的方式,得到一 种混合调度方法。该混合调度方法既拥有合作式调度系统的高可预测性和可靠性,也拥有 抢占式调度系统的高实时响应能力的优点,通过控制两种不同调度方式的任务数目,充分 利用系统资源,有效控制系统开销。
图1是现有技术中抢占式调度的执行情况示意 图2是现有技术中合作式调度的执行情况示意图; 图3是本发明实施例提供的TCB双向链表与TCB地址的关系示意图; 图4是本发明实施例提供的就绪组与就绪表的关系示意图; 图5是本发明实施例提供的时钟节拍中断流程图。
具体实施例方式
下面结合
,对本发明进行进一步详细描述。 本发明实施例中将执行所述混合调度方法的程序虚拟称为一混合调度器。 本发明实施例主要包括两大步骤,即任务调度的前期准备和任务调度,下面分别
予以详细描述。 任务调度的前期准备。首先,创建任务,为每个任务建立任务控制块(TaskControl Block, TCB)结构体,并将所有的TCB连接成TCB双向链表,同时,建立TCB地址数组 TCBPrioTbl[LowestPrio+l]。如图3所示,图中介绍了 TCB地址数组与TCB双向链表之间 的关系。TCB地址数组是存放所有TCB地址的数组,数组的下标对应任务的优先级,数组的 大小取决于最低的任务优先级LowestPrio,任务优先级范围一般为0 63,即64个任务。 所以TCB地址数组的大小是LowestPrio+l,它的每个元素均指向对应TCB结构体的入口地 址,也就是任务堆栈指针,以方便低级编程语言对TCB的操作。 每个TCB结构体对应一个任务,当一个任务创建后,该任务对应TCB随之确定。TCB 中的每个变量随之确定,调度器对任务的操作只能通过对TCB的操作实现。任务的TCB结 构体中包括延迟时间、执行周期、任务类型和优先级,这些变量在任务调度过程中是必不可 少的。事件触发任务的TCB结构体中延迟时间和执行周期一般为0 ;时间触发任务的TCB结 构体中的延迟时间表示该任务延迟多少个时钟节拍后再执行,执行周期表示时间触发的任 务每隔多少个时钟节拍执行一次。任务类型如背景技术中所述,一般分为4种类型的任务, 它们分别是时间触发的合作式任务,时间触发的抢占式任务,事件触发的的合作式任务和 事件触发的的抢占式任务。任务的优先级是一个8位的无符号变量,它是任务是否存在的 重要标识,每个任务对应一个优先级,该值范围一般是0 63,即总共有64个优先级不同的 任务。 一般地,优先级0是最高任务优先级,优先级63是最低任务优先级,其他任务优先级 高低以此类推。每个TCB结构体用*Next和*Prev指针链接在一起,构成一个双向链表,以 提高查找效率。 然后,建立并初始化就绪表和就绪组,如它们可以分别表示为
就绪表墜igned char 0SRdyTbl [LowestPrio/8+l];
就绪组墜igned char 0SRdyGrp。 其中就绪表的大小由所有任务中最低的任务优先级来决定,每个元素是一个8位 的变量,就绪表以8个优先级为一组,即为就绪表的一个元素,其中一个优先级对应一个任 务,如图4所示。该就绪表的大小为64,有8个元素,即分为8组,每组就是一个8位变量。 方格中的数字表示对应任务的优先级,按照从右向左的顺序递增排列。任务的优先级是一 个8位的无符号变量,其低3位用于确定任务在就绪表中的水平位置,即X方向,其高3位 用于确定任务在就绪表中的垂直位置,即Y方向。例如,某任务的优先级是35,那么它对应 的二进制值为100011,则其X坐标为3, Y坐标为4,所以对应就绪表中从上往下数第5行,unsigned char const OSMapTbl[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,
优先级判定表的大小是256,定义优先级判定表为unsigned char const OSUnM即Tbl[] = {
从右左数第4行的位置,即第35方格,就对应该任务。如果就绪表中的任意一位置l,则表示该位对应的任务处于就绪态,即该任务可以随时被调度器所调用,直接执行,如果该表任意一位置0,则表示该位对应的任务并不处于就绪态,而是处于挂起态,则暂时不能被调度器所调用。 就绪组是一个8位的变量,方格中的数字表示对应的就绪表中的每一组,如果就绪组中的任意一位置l,则表示就绪表中对应的组,即Y方向上的组,有任务处于就绪态;如果就绪组中任意一组置O,则表示就绪表中对应组的任务处于挂起态,暂不执行。如图2所示,若就绪组的第0位被置l,则表示就绪表的第0组中,优先级为0至7的任意一个或多个任务处于就绪态;如果就绪组的第2位被置O,则表示就绪表的第2组中,优先级为10至23的任务都处于挂起态。 然后,建立并初始化位掩码表和优先级判定表。位掩码表的大小是8个,定义位掩
码表为
0x80}
}。 建立并初始化中断优先级表ISR_IDPrio [],用来标识各种中断源对应ISR的优先
级高低,其下标为中断源号,每一元素则是对应中断的ISR作为任务时的优先级。 安装时钟节拍中断,定义时钟节拍中断的执行周期,中断类型等,使系统每隔一段
时间产生一次中断,这个时钟节拍中断相当于一个全局时钟,以中断的形式产生,每隔一段
时间会自动运行相应的时钟节拍中断程序,以便进行任务调度。 以上介绍了任务调度的前期准备的详细情况,创建了任务,任务控制块链表,就绪
0,4,5,4,6,4,5,4,7,4,5,4,6,4,5,4,
,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,
,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,
,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,
,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0,,0表,就绪组,掩码表和优先级判定表,并安装了时钟节拍中断,下面将介绍任务调度的方法。
如前面所述,我们可以把嵌入式系统中的任务分为时间触发的合作式任务,时间触发的抢占式任务,事件触发的的合作式任务和事件触发的的抢占式任务。时间触发的任务需要根据该任务的时间特性,如延迟时间和执行周期,来进行相应处理。而事件触发的任务主要是由嵌入式系统的中断或者任务间通信机制,如任务等待或获得一个信号量所触发,大部分由中断事件的形式出现,与任务的时间特性无关,所以在任务调度过程中分开处理。 任务创建后,任务控制块TCB中任务的类型,优先级,还有延迟时间随之确定。
任务调度主要是通过时钟节拍中断程序进行,每次时钟节拍中断程序的运行都是重新进行任务调度的时机,如图5所示,图中介绍了时钟节拍中断的流程图,包括以下步骤 步骤S501,判断是否是时间触发的任务,如果是则跳转至步骤S502,否则跳转至步骤S505。 步骤S502,自减时间触发任务的延迟时间; 步骤S503,判断自减后的时间触发任务的延迟时间,如果为0,则执行步骤S504,否则跳转至步骤S505 ; 步骤S504,使时间触发的任务就绪; 步骤S505,查就绪表获得当前就绪的最高任务优先级; 步骤S506,判断就绪的最高优先级任务是合作式任务还是抢占式任务,如果是合作式任务,则执行步骤S507,否则执行步骤S508 ; 步骤S507,运行最高优先级的合作式任务,运行完成后,使该任务处于挂起态,然后执行步骤S505 ; 步骤S508,运行最高优先级的抢占式任务。 下面详细介绍该流程。进入时钟节拍中断程序后,我们首先对时间触发的任务进行处理,将对应的任务控制块TCB中的延迟时间自减,即令延迟时间减1,当延迟时间减为0时,则使该任务就绪,即在就绪表OSRdyTbl[]中对应该任务优先级的位置置l,而且在就绪组OSRdyGrp中对应任务所在组的位置置1。如果是事件触发的任务,则不作任何处理。
其中,在就绪表和就绪组中将对应某任务的位置置1的方法是如图4所示,在就绪表OSRdyTbl []中,因为该任务优先级的低3位对应OSRdyTbl []的X坐标,高3位对应Y坐标,所以利用位掩码表OSM即Tbl []查找X坐标和Y坐标对应的位掩码,以确定X、 Y坐标在8位变量中是第几个元素,最后将两个位掩码值分别赋给就绪组OSRdyGrp和就绪表OSRdyTbl []中该任务所在的组值。 例如,使优先级为33的任务置为就绪态的详细过程为33的二进制值为100001,X表优先级低3位为l,它对应的位掩码为OSM即Tbl[X], Y表优先级高3位为4,它对应的位掩码为OSM即Tbl [Y],则对就绪组置位为OSRdyGrp = OSM即Tbl [Y],对就绪表置位为OSRdyTbl [OSM即Tbl [Y] ] = OSM即Tbl [X]。 检查正在运行的合作式任务是否被时钟节拍中断所中断,是则根据用户需求作出处理。因为每个时钟节拍的时间间隔有限,合作式任务有可能会被时钟节拍中断所中断,所以为了进一步提高合作式调度的合理性,需要在时钟节拍中断程序开始时,检查是否有正在运行的合作式任务被时钟节拍中断所中断,可以通过检查一个标志位是否为0的方法实现。例如当标志位为1时有合作式任务被中断,则进行相应处理,当标志位为0时没有合作式任务被中断。用户根据自己的实际需求,处理选项可以在创建任务时进行选择,决定具体采用哪种处理方法,例如继续执行未完成的任务,放弃执行未完成的任务,重新执行未完成的任务等。 —般地,创建任务时可以为合作式任务设置一个截止时间,一般来说,该截止时间等于其运行周期,在时钟节拍中断程序开始时进行自减,当截止时间为O时,根据用户需求作出处理,处理选项可以在创建任务时进行选择。 然后,根据就绪表和就绪组查找优先级判定表,获得当前就绪的最高任务优先级。当有任务被置为就绪态时,就绪表和就绪组对应任务的位置就会置l,根据就绪组和就绪表找出最高的任务优先级。详细过程是先用就绪组OSRdyGrp查找优先级判定表OSUnM即Tbl [],得出最高优先级的高3位,即是最高优先级任务在就绪表0SRdyTbl []中所属组的位掩码,再用该组查找优先级判定表OSUnM即Tbl [],得出最高优先级的低3位,最后,将前后3位结合起来就是当前就绪的最高任务优先级。例如,如果就绪组0SRdyGrp的值为01010100,即0x54,查找优先级判定表OSUnMapTbl
的值为2,即最高任务优先级的高3位是2,如果0SRdyTbl [2]的值是01100010,即0x62,查找优先级判定表0SUnM即Tbl
]的值为1,则最高任务优先级的二进制值就是010001,即11。
再者,如果就绪的最高优先级任务是合作式任务,则直接运行该合作式任务。详细过程是根据最高任务优先级查找任务控制块TCB,并判断TCB的任务类型是否是合作式任务,是则直接运行该任务直到结束,并不需要进行上下文切换。该合作式任务执行完毕后,清除其在就绪表和就绪组的位置,清除该任务的就绪态,其方法与在就绪表和就绪组置1很相似,只是将该任务在就绪组和就绪表的位置为O,而不是置为l,详细步骤不再细述。
—般地,当一个合作式任务执行完毕后,允许检查在该合作式任务执行期间是否有事件触发的任务请求执行,有则使其就绪。因为合作式任务在执行期间一般不允许中断,若有中断事件发生,不能即时作出响应,我们可以通过检查在合作式任务执行期间是否有中断事件请求发生,在执行合作式任务完毕后及时将发出请求的事件触发任务置为就绪态,尽量提高调度器对外部事件的实时响应能力。 检查是否有中断事件请求发生的详细过程是从硬件上查找中断源,利用所得到的中断源编号,在中断优先级表IISR_IDPrio[]查找对应的任务优先级,利用所得到的任务优先级,使该事件触发任务就绪。另外,因为这个检查功能需要一定的执行时间,而且执行时间具有不确定性,没有中断请求时的检查时间比有很多中断发出请求时少,这对后面的合作式任务的开始执行时间和截止执行时间产生不确定性,因而发生任务抖动现象。因此我们将检查时间设置为一个固定时间ChklntrDuration,当一个合作式任务执行完毕后,则比较固定时间与时钟节拍剩余间隔(时钟节拍时间间隔与ChklntrDuration之差),若前者比较小,则执行该检查功能,否则放弃检查。当执行该检查功能时,如果其运行时间超过ChklntrDuration时,无论调度器是否正在检查,立即放弃执行,进入任务调度,
接着,重新跳转至查找当前就绪的最高任务优先级的步骤,找出当前最高优先级的任务,若该任务是合作式任务,执行之,检查后跳转至查找最高任务优先级步骤,若该任务是抢占式任务,则进行上下文切换,即将当前处理器的所有寄存器保存在对应堆栈,并将
10保存在该抢占式任务堆栈的内容(存放该任务对应所有寄存器的内容)取出,执行最高优先级的抢占式任务。 本发明通过把ISR以任务对待,并与其他任务一起分配优先级,同时复合利用时间触发与事件触发架构和采用抢占式与合作式任务混合调度的方式,综合两种调度方式的优点,克服各自缺点,得到一种混合调度方法。该混合调度方法既拥有合作式调度系统的高可预测性和可靠性,也拥有抢占式调度系统的高实时响应能力的优点,其通过合理调度四种不同任务,达到了充分利用系统资源,有效控制系统开销的目的。 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
权利要求
一种嵌入式实时操作系统的混合调度方法,包括任务调度前资源配置和任务调度,其特征在于,所述任务调度包括以下步骤通过事件触发或时间触发的方式使任务就绪;根据就绪表和就绪组查找优先级判定表,获得当前就绪的最高任务优先级;根据所述当前就绪的最高任务优先级,获得所述就绪的最高优先级任务的任务控制块结构体,并判断该任务的类别;当所述就绪的最高优先级任务是合作式任务时,执行该合作式任务,所述合作式任务执行完毕后,清除其在就绪表和就绪组中的位置,再根据就绪表和就绪组查找优先级判定表,获得当前就绪的最高任务优先级。
2. 如权利要求1所述的混合调度方法,其特征在于,所述任务调度前资源配置具体包 括如下步骤创建任务;建立任务控制块结构体;建立任务控制块地址数组;建立并初始化就绪表 和就绪组;建立并初始化位掩码表;建立并初始化优先级判定表;建立并初始化中断优先 级表;安装时钟节拍中断。
3. 如权利要求2所述的混合调度方法,其特征在于,所述方法把中断程序以任务对待, 并与其他任务一起分配优先级。
4. 如权利要求1、2或3所述的混合调度方法,其特征在于,所述使任务就绪具体包括 因通信与同步机制或中断使事件触发的任务就绪,或将时间触发的任务对应的任务控制块中的延迟时间减1,当延迟时间减为0时,使所述时间触发的任务就绪。
5. 如权利要求4所述的混合调度方法,其特征在于,所述使任务就绪具体是指 将就绪表中对应该任务优先级的位置为l,而且在就绪组中对应任务所在组的位置为1。
6. 如权利要求1所述的混合调度方法,其特征在于,所述方法还包括 执行时钟节拍中断程序时,检查正在运行的合作式任务是否被时钟节拍中断所中断,是则根据用户需求选择处理选项,所述处理选项在创建任务时设置,其包括继续执行未完 成的任务,放弃执行未完成的任务或重新执行未完成的任务。
7. 如权利要求1所述的混合调度方法,其特征在于,还包括以下步骤 在所述合作式任务执行完毕后,检查在所述合作式任务执行期间是否有中断事件触发的任务请求执行,在有中断事件触发的任务请求执行时,使所请求的事件触发的任务就绪。
8. 如权利要求7所述的混合调度方法,其特征在于,所述检查是否有中断事件请求发 生具体步骤是软件查找在合作式任务运行过程中所发生的中断,利用所得到的中断源编号,在所述 中断优先级表中查找所对应的任务优先级,利用所得到的优先级使对应任务就绪。
9. 如权利要求7所述的混合调度方法,其特征在于,还包括以下步骤 将所述检查中断事件的时间设置为固定时间,合作式任务执行完毕后,比较固定时间与时钟节拍剩余间隔,若前者比较小,则执行该检查功能,否则放弃执行检查功能;在执行该检查功能时,如果所述检查功能运行时间超过所述固定时间,立即执行任务 调度。
10. 如权利要求1或9所述的混合调度方法,其特征在于,还包括以下步骤当就绪的最高优先级任务是抢占式任务时,运行最高优先级的抢占式任务。
全文摘要
本发明涉及一种嵌入式实时操作系统的混合调度方法,包括任务调度前资源配置和任务调度,所述任务调度包括通过事件触发或时间触发的方式使任务就绪;根据就绪表和就绪组查找优先级判定表,获得当前就绪的最高任务优先级;当就绪的最高优先级任务是合作式任务时,直接运行该合作式任务,该合作式任务执行完后,清除其在就绪表和就绪组中的位置,并再执行前一步骤。本发明通过把ISR以任务对待,并与其他任务一起分配优先级,同时复合利用时间触发与事件触发架构和采用抢占式与合作式任务混合调度的方式,得到一种高可预测性和可靠性,同时具有高实时响应能力的调度方法,该调度方法可以充分利用系统资源,有效控制系统开销。
文档编号G06F9/46GK101751289SQ200810241349
公开日2010年6月23日 申请日期2008年12月19日 优先权日2008年12月19日
发明者黄强 申请人:黄强