专利名称:一种空间飞行器嵌入式实时操作系统调度方法
技术领域:
本发明涉及一种空间飞行器嵌入式实时操作系统调度方法,属于嵌入式操作系统 领域。
背景技术:
在设计空间飞行器计算机系统软件时,传统的主程序+中断方式存在功能简单、 设计复杂、可靠性和可扩展性差等缺陷,为解决这些问题,采用基于多任务模型的嵌入式操 作系统进行系统软件设计。空间飞行器的功能模块以任务的形式封装,系统中存在多个任 务并发执行。传统的基于位图的优先级抢占方法只能支持不同优先级任务的调度,如《μ C/0S II,the real-time kernel》中介绍的方法,系统中的每个优先级只能对应一个任务,不允 许多个任务具有相同优先级。但是空间飞行器任务繁多,不可避免的会存在同优先级任务 的情况,如空间飞行器的图象数据处理任务和显示任务,需要并行执行以达到同步传输图 象场景的目的。PC/OS II所采用基于位图的优先级可抢占式调度,对于存在同优先级的任 务时,这种方法也难以满足调度需要,无法保证所有任务公平的获得CPU资源。而VxWorks 中采用多路优先级队列来支持同优先级任务调度,但只采用了一维位图查找最高优先级, 时间复杂度可达O(N),实时性不够理想。
发明内容
本发明的技术解决问题是克服现有技术的不足,提供了一种空间飞行器嵌入式 实时操作系统调度方法。采用该方法克服传统技术采用遍历的优先级抢占方法造成的系统 实时性低的不足,同时又采用多级任务链表实现了同优先级任务的调度。本发明的技术解决方案是一种空间飞行器嵌入式实时操作系统调度方法通过以下步骤实现步骤1 建立优先级映射表、索引表与多级任务链表1. 1、建立2维的优先级映射表与1维索引表,并将优先级映射表与索引表中元素 赋初值为0 ;所述的索引表的每一位与优先级映射表的每一行相对应;所述的优先级映射 表的每一个元素对应于不同的任务优先级;1. 2、任务被创建时,根据所创建任务的优先级prio,向优先级映射表进行映射,确 定优先级prio在优先级映射表中的行号与列号,并将优先级映射表中的对应行号与列号 位设为有效;1. 3、根据步骤1. 2中的行号将索引表的对应位设为有效;1.4、建立多级任务链表,以优先级prio为标号将创建的任务插入到多级任务链 表中,同优先级的任务在链表中具有相同的级别标号;步骤2 在任务调度点,选择最高优先级任务2. 1、搜索索引表中最低有效位,存储为索引值;
2. 2、根据步骤2. 1得出的索引值,索引优先级映射表对应行中的最低有效位,存 储为映射值;2. 3、根据索引值和映射值计算并存储任务的最高优先级,送入步骤3 ;步骤3 根据步骤2的最高优先级选择多级任务链表中与最高优先级相对应的任 务并执行,若同一优先级中具有多个任务则采用时间片轮转的方式执行。步骤1. 2中根据优先级prio向优先级映射表进行映射的方法为用优先级prio 除以优先级映射表的总列数,所得商为优先级映射表的行号,余数为优先级映射表的列号。本发明与现有技术相比具有如下优点(1)本发明所采用的一维位图与二维位图的相结合的优先级索引方式,较当前所 使用的遍历的搜索方式,以空间换时间,明显提高了系统实时性。(2)本发明利用多级任务链表对不同优先级任务进行管理,仅通过对优先级的 0(1)量级时间复杂度的检索,再结合时间片轮转的方法,便可实现对同优先级任务的调度, 降低了系统实现时复杂度。(3)本发明通过多级位图与多级任务链表相结合实现了在任务调度方式上同优先 级任务的轮转与不同优先级任务间抢占的两种调度方式的结合。
图1为本发明流程图;图2为任务优先级映射图;图3为任务最高优先级索引图。
具体实施例方式如图1所示,为本发明流程图,包括建立任务优先级映射表与多级任务链表的步 骤;在任务调度点,选择最高优先级任务的步骤以及根据优先级执行任务的步骤。一、方法原理本发明利用一维位图、二维位图以及多级任务链表相结合的方式实现对空间飞行 器的嵌入式操作系统中不同优先级任务进行的调度。采用索引表实现一维位图的功能;优先级映射表实现二维位图的功能。在工作时, 利用索引表对操作系统中的所有优先级进行一级划分,索引表中的每个元素对应于优先级 映射表中的每一行,可表示一定的优先级范围,优先级映射表中的每一个元素代表具体的 优先级数。通过索引表与优先级映射表相结合的搜索方式可实现对已知优先级中所有任务 的搜索。多级任务链表以任务的优先级数为标号,存储所有处于可调度状态的任务,利用 对索引表与优先级映射表的搜索结果,选择任务进行调度。对于高优先级的任务优先执行, 对于同一优先级的任务采用时间片轮转的方式执行。二、设计方案2. 1、索引表与优先级映射表索引表采用1维索引结构实现,优先级映射表采用2维索引结构实现。索引表中 的每一位对应于优先级映射表中的一行。
在具体工作时,根据创建任务的优先级prio,对索引表与优先级映射表进行置位。 具体的置位方法为设y为优先级为prio的任务在索引表中的位置即在优先级映射表中的行号;χ为 优先级为prio的任务在优先级映射表中的列号,2维优先级映射表的存储规则为,以χ = y =0处的元素代表最高优先级,x、y为最大时处的元素代表最低优先级。(χ+1)女(y+1)的 最大值可代表系统中任务的最大优先级数,其中为便于实现χ的最大值取值为2n-l,n为大 于等于3的正整数。在本发明实施例中,索引表的长度设计为Sbit的1维表,即y最大等 于7 ;优先级映射表设计为8行8列的2维表,即χ最大等于7。因此,采用本实施例可实现 对64个不同优先级任务的分类。在本实施例中,系统在创建任务时将为每一个任务指定0到63中的一个数作为任 务的优先级prio。对于每一个prio,首先用prio除以优先级映射表的总列数,利用y存储 商值,利用χ存储余数。并根据将x、y的值将索引表与优先级映射表中的对应位置为有效。在具体实现时,根据最大为63的prio,可首先将prio右移3个bit位,利用prio 中的最高3个bit位的值对索引表中的y位置元素进行置位,选择原prio中的最低3个 bit位对优先级映射表中位于y行中的低χ位置元素进行置位。如当prio = 21时,其最高 3个bit位的十进制表示为2,最低3个有效位的十进制表示为5,则令y = 2,χ = 5,并分 别对如图2中索引表和优先级映射表中的对应元素赋值。2. 2、选择最高优先级任务在系统的每个任务调度点,根据索引表和优先级映射表的当前值索引可调度任务 中的最高优先级。其中所述的任务调度点为空间飞行器嵌入式操作系统中包括任务的创 建、删除、挂起、休眠以及时钟中断等会引起任务状态改变的操作点。同样以本实施例中,Sbit长度的1维索引表和8行8列的优先级映射表为例,具体 索引方法为检索索引表中的最低有效位,并以检索到的索引表中的最低有效位为索引值,以 索引值为行,检索优先级映射表中当前行的最低有效位,即同一行中含有效位的最小列号, 记为映射值。采用与2. 1中置位方法相逆的计算方法计算出当前位置所对应的优先级,记 为当前任务调度点可调度任务中的最高优先级。现以优先级prio = 21、22、23的任务为例,对索引方法进行说明,如表(1)所示为 21、22、23的二进制表示与χ和y的关系。
权利要求
1. 一种空间飞行器嵌入式实时操作系统调度方法,其特征在于通过以下步骤实现步骤1 建立优先级映射表、索引表与多级任务链表 1. 1、建立2维的优先级映射表与1维索引表,并将优先级映射表与索引表中元素赋初 值为0 ;所述的索引表的每一位与优先级映射表的每一行相对应;所述的优先级映射表的 每一个元素对应于不同的任务优先级;1. 2、任务被创建时,根据所创建任务的优先级prio,向优先级映射表进行映射,确定优 先级prio在优先级映射表中的行号与列号,并将优先级映射表中的对应行号与列号位设 为有效;1. 3、根据步骤1. 2中的行号将索引表的对应位设为有效;1.4、建立多级任务链表,以优先级prio为标号将创建的任务插入到多级任务链表中, 同优先级的任务在链表中具有相同的级别标号;步骤2 在任务调度点,选择最高优先级任务2.1、搜索索引表中最低有效位,存储为索引值; 2. 2、根据步骤2. 1得出的索引值,索引优先级映射表对应行中的最低有效位,存储为 映射值;2. 3、根据索引值和映射值计算并存储任务的最高优先级,送入步骤3 ;步骤3 根据步骤2的最高优先级选择多级任务链表中与最高优先级相对应的任务并 执行,若同一优先级中具有多个任务则采用时间片轮转的方式执行。
2.根据权利要求1所述的一种空间飞行器嵌入式实时操作系统调度方法,其特征在 于步骤1. 2中根据优先级prio向优先级映射表进行映射的方法为用优先级prio除以优 先级映射表的总列数,所得商为优先级映射表的行号,余数为优先级映射表的列号。
3.根据权利要求1所述的一种空间飞行器嵌入式实时操作系统调度方法,其特征在 于所述的2维的优先级映射表的总列数为2n,其中η为大于等于3的正整数。
4.根据权利要求1所述的一种空间飞行器嵌入式实时操作系统调度方法,其特征在 于所述的步骤2中的任务调度点为引起系统任务状态变化的操作点,包括任务创建、任务 挂起、任务删除、任务休眠、时钟中断。
全文摘要
一种空间飞行器嵌入式实时操作系统调度方法,其特征在于包括建立优先级映射表、索引表与多级任务链表的步骤;在任务调度点,选择最高优先级任务的步骤;根据优先级执行任务的步骤。本发明通过映射表、索引表实现了任务优先级的2维索引,较1维位图的方式明显减少了时间复杂度,同时又利用多级任务链表实现了对不同优先级任务的管理,在多级任务链表中根据优先级检索并执行任务,对于同优先级的多个任务又可采用时间片轮转的方法实现CPU资源的均匀分配。
文档编号G06F9/50GK102004664SQ20101051734
公开日2011年4月6日 申请日期2010年10月18日 优先权日2010年10月18日
发明者乔磊, 孙越, 彭飞, 谢琼, 赵玮 申请人:北京控制工程研究所