CN102004664A - 一种空间飞行器嵌入式实时操作系统调度方法 - Google Patents
一种空间飞行器嵌入式实时操作系统调度方法 Download PDFInfo
- Publication number
- CN102004664A CN102004664A CN 201010517345 CN201010517345A CN102004664A CN 102004664 A CN102004664 A CN 102004664A CN 201010517345 CN201010517345 CN 201010517345 CN 201010517345 A CN201010517345 A CN 201010517345A CN 102004664 A CN102004664 A CN 102004664A
- Authority
- CN
- China
- Prior art keywords
- priority
- task
- mapping table
- row
- priority mapping
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Devices For Executing Special Programs (AREA)
Abstract
一种空间飞行器嵌入式实时操作系统调度方法,其特征在于包括:建立优先级映射表、索引表与多级任务链表的步骤;在任务调度点,选择最高优先级任务的步骤;根据优先级执行任务的步骤。本发明通过映射表、索引表实现了任务优先级的2维索引,较1维位图的方式明显减少了时间复杂度,同时又利用多级任务链表实现了对不同优先级任务的管理,在多级任务链表中根据优先级检索并执行任务,对于同优先级的多个任务又可采用时间片轮转的方法实现CPU资源的均匀分配。
Description
技术领域
本发明涉及一种空间飞行器嵌入式实时操作系统调度方法,属于嵌入式操作系统领域。
背景技术
在设计空间飞行器计算机系统软件时,传统的主程序+中断方式存在功能简单、设计复杂、可靠性和可扩展性差等缺陷,为解决这些问题,采用基于多任务模型的嵌入式操作系统进行系统软件设计。空间飞行器的功能模块以任务的形式封装,系统中存在多个任务并发执行。
传统的基于位图的优先级抢占方法只能支持不同优先级任务的调度,如《μC/OS II,the real-time kernel》中介绍的方法,系统中的每个优先级只能对应一个任务,不允许多个任务具有相同优先级。但是空间飞行器任务繁多,不可避免的会存在同优先级任务的情况,如空间飞行器的图象数据处理任务和显示任务,需要并行执行以达到同步传输图象场景的目的。μC/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)本发明利用多级任务链表对不同优先级任务进行管理,仅通过对优先级的O(1)量级时间复杂度的检索,再结合时间片轮转的方法,便可实现对同优先级任务的调度,降低了系统实现时复杂度。
(3)本发明通过多级位图与多级任务链表相结合实现了在任务调度方式上同优先级任务的轮转与不同优先级任务间抢占的两种调度方式的结合。
附图说明
图1为本发明流程图;
图2为任务优先级映射图;
图3为任务最高优先级索引图。
具体实施方式
如图1所示,为本发明流程图,包括:建立任务优先级映射表与多级任务链表的步骤;在任务调度点,选择最高优先级任务的步骤以及根据优先级执行任务的步骤。
一、方法原理
本发明利用一维位图、二维位图以及多级任务链表相结合的方式实现对空间飞行器的嵌入式操作系统中不同优先级任务进行的调度。
采用索引表实现一维位图的功能;优先级映射表实现二维位图的功能。在工作时,利用索引表对操作系统中的所有优先级进行一级划分,索引表中的每个元素对应于优先级映射表中的每一行,可表示一定的优先级范围,优先级映射表中的每一个元素代表具体的优先级数。通过索引表与优先级映射表相结合的搜索方式可实现对已知优先级中所有任务的搜索。
多级任务链表以任务的优先级数为标号,存储所有处于可调度状态的任务,利用对索引表与优先级映射表的搜索结果,选择任务进行调度。对于高优先级的任务优先执行,对于同一优先级的任务采用时间片轮转的方式执行。
二、设计方案
2.1、索引表与优先级映射表
索引表采用1维索引结构实现,优先级映射表采用2维索引结构实现。索引表中的每一位对应于优先级映射表中的一行。
在具体工作时,根据创建任务的优先级prio,对索引表与优先级映射表进行置位。具体的置位方法为:
设y为优先级为prio的任务在索引表中的位置即在优先级映射表中的行号;x为优先级为prio的任务在优先级映射表中的列号,2维优先级映射表的存储规则为,以x=y=0处的元素代表最高优先级,x、y为最大时处的元素代表最低优先级。(x+1)*(y+1)的最大值可代表系统中任务的最大优先级数,其中为便于实现x的最大值取值为2n-1,n为大于等于3的正整数。在本发明实施例中,索引表的长度设计为8bit的1维表,即y最大等于7;优先级映射表设计为8行8列的2维表,即x最大等于7。因此,采用本实施例可实现对64个不同优先级任务的分类。
在本实施例中,系统在创建任务时将为每一个任务指定0到63中的一个数作为任务的优先级prio。对于每一个prio,首先用prio除以优先级映射表的总列数,利用y存储商值,利用x存储余数。并根据将x、y的值将索引表与优先级映射表中的对应位置为有效。
在具体实现时,根据最大为63的prio,可首先将prio右移3个bit位,利用prio中的最高3个bit位的值对索引表中的y位置元素进行置位,选择原prio中的最低3个bit位对优先级映射表中位于y行中的低x位置元素进行置位。如当prio=21时,其最高3个bit位的十进制表示为2,最低3个有效位的十进制表示为5,则令y=2,x=5,并分别对如图2中索引表和优先级映射表中的对应元素赋值。
2.2、选择最高优先级任务
在系统的每个任务调度点,根据索引表和优先级映射表的当前值索引可调度任务中的最高优先级。其中所述的任务调度点为空间飞行器嵌入式操作系统中包括任务的创建、删除、挂起、休眠以及时钟中断等会引起任务状态改变的操作点。
同样以本实施例中,8bit长度的1维索引表和8行8列的优先级映射表为例,具体索引方法为:
检索索引表中的最低有效位,并以检索到的索引表中的最低有效位为索引值,以索引值为行,检索优先级映射表中当前行的最低有效位,即同一行中含有效位的最小列号,记为映射值。采用与2.1中置位方法相逆的计算方法计算出当前位置所对应的优先级,记为当前任务调度点可调度任务中的最高优先级。
现以优先级prio=21、22、23的任务为例,对索引方法进行说明,如表(1)所示为21、22、23的二进制表示与x和y的关系。
优先级 | 二进制表示 | 索引表(y) | 优先级映射表(x,y) |
21 | 010101 | 2 | (5,2) |
22 | 010110 | 2 | (6,2) |
23 | 010111 | 2 | (7,2) |
表1
首先搜索索引表中的最低有效位,即第一个值为1的元素,可得到y=2;以y=2为行号搜索优先级映射表第2行中的最低有效位,可得到x=5,则计算优先级为[(y<<3)+x]=21,其中,“<<3”代表对y左移3位。因此,当前最高优先级为21。
2.3、根据优先级执行任务
根据2.2所确定的最高优先级选择将被调度执行的任务,在任务调度点,所有可被调度的任务都存储于多级任务链表中。在任务被创建时,每个任务便以优先级标号添加到多级任务链表中。
多级任务链表的建立方法为:根据优先级的数量,建立包含优先级的任务链表数组,数组的每个元素对应于不同的优先级任务链表,并按照优先级从大到小的顺序进行排列;对于同一优先级的任务,以优先级为标号将新创建的任务添加到链表的尾部,并初始化任务的轮转时间片计数值。
根据最高优先级选择任务时,首先以最高优先级为下标选择任务链表数组中对应位置的优先级任务链表,并以时间片轮转的方法执行优先级任务链表中位于头部的任务。
在任务的执行过程中,判断当前任务执行的时间片是否到时,并且是否有同优先级的就绪任务,如果这两个条件同时满足,则从同优先级任务链表中挑选下一个任务,使其进入执行态,使当前执行的任务进入就绪状态并插入到同优先级任务链表的尾部,同时重新初始化时间片轮转剩余时间计数值,然后进行上下文切换。
本发明本专利中的操作系统调度方法能够对多个相同优先级的任务进行公平的CPU资源分配、具有O(1)时间复杂度性能特点,能够很好的满足空间飞行器对复杂任务调度需求。
本发明未详细说明部分属本领域技术人员公知常识。
Claims (4)
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,其中n为大于等于3的正整数。
4.根据权利要求1所述的一种空间飞行器嵌入式实时操作系统调度方法,其特征在于:所述的步骤2中的任务调度点为引起系统任务状态变化的操作点,包括任务创建、任务挂起、任务删除、任务休眠、时钟中断。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010517345 CN102004664A (zh) | 2010-10-18 | 2010-10-18 | 一种空间飞行器嵌入式实时操作系统调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010517345 CN102004664A (zh) | 2010-10-18 | 2010-10-18 | 一种空间飞行器嵌入式实时操作系统调度方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN102004664A true CN102004664A (zh) | 2011-04-06 |
Family
ID=43812043
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010517345 Pending CN102004664A (zh) | 2010-10-18 | 2010-10-18 | 一种空间飞行器嵌入式实时操作系统调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102004664A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103576698A (zh) * | 2012-07-18 | 2014-02-12 | 波音公司 | 协调多个运载器工作分配的任务重新安排 |
CN103713948A (zh) * | 2013-12-30 | 2014-04-09 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
CN105677464A (zh) * | 2015-12-31 | 2016-06-15 | 江苏小牛电动科技有限公司 | 一种基于电动车中控系统的任务调度系统和方法 |
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
CN106200659A (zh) * | 2016-07-20 | 2016-12-07 | 深圳洲际通航投资控股有限公司 | 飞行器的中断控制方法及系统 |
CN106201695A (zh) * | 2016-07-15 | 2016-12-07 | 郑州飞机装备有限责任公司 | 适用于嵌入式软件系统的多任务调度方法 |
CN106445659A (zh) * | 2016-09-09 | 2017-02-22 | 北京控制工程研究所 | 一种空间飞行器周期性混成随机任务调度方法 |
CN109947058A (zh) * | 2019-02-15 | 2019-06-28 | 北京空间飞行器总体设计部 | 一种航天器多项自主管理功能状态控制方法 |
CN111356984A (zh) * | 2019-01-21 | 2020-06-30 | 深圳市大疆创新科技有限公司 | 任务显示方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519735A (zh) * | 2003-01-24 | 2004-08-11 | 深圳市中兴通讯股份有限公司 | 嵌入式实时操作系统的进程调度方法 |
CN1529233A (zh) * | 2003-10-17 | 2004-09-15 | 清华大学 | 嵌入式实时操作系统的二分查找式任务调度方法 |
CN101178664A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 实时操作系统中的任务调度方法及系统 |
-
2010
- 2010-10-18 CN CN 201010517345 patent/CN102004664A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1519735A (zh) * | 2003-01-24 | 2004-08-11 | 深圳市中兴通讯股份有限公司 | 嵌入式实时操作系统的进程调度方法 |
CN1529233A (zh) * | 2003-10-17 | 2004-09-15 | 清华大学 | 嵌入式实时操作系统的二分查找式任务调度方法 |
CN101178664A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 实时操作系统中的任务调度方法及系统 |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103576698A (zh) * | 2012-07-18 | 2014-02-12 | 波音公司 | 协调多个运载器工作分配的任务重新安排 |
CN103576698B (zh) * | 2012-07-18 | 2018-09-25 | 波音公司 | 协调多个运载器工作分配的任务重新安排 |
CN103713948A (zh) * | 2013-12-30 | 2014-04-09 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
CN103713948B (zh) * | 2013-12-30 | 2015-09-23 | 北京控制工程研究所 | 一种优先级抢占时间片轮转操作系统中任务定时调度方法 |
CN105677464A (zh) * | 2015-12-31 | 2016-06-15 | 江苏小牛电动科技有限公司 | 一种基于电动车中控系统的任务调度系统和方法 |
CN106126326A (zh) * | 2016-06-23 | 2016-11-16 | 东软集团股份有限公司 | 定时任务管理方法和装置 |
CN106201695A (zh) * | 2016-07-15 | 2016-12-07 | 郑州飞机装备有限责任公司 | 适用于嵌入式软件系统的多任务调度方法 |
CN106200659A (zh) * | 2016-07-20 | 2016-12-07 | 深圳洲际通航投资控股有限公司 | 飞行器的中断控制方法及系统 |
CN106200659B (zh) * | 2016-07-20 | 2019-05-31 | 深圳洲际通航投资控股有限公司 | 飞行器的中断控制方法及系统 |
CN106445659A (zh) * | 2016-09-09 | 2017-02-22 | 北京控制工程研究所 | 一种空间飞行器周期性混成随机任务调度方法 |
CN106445659B (zh) * | 2016-09-09 | 2019-07-12 | 北京控制工程研究所 | 一种空间飞行器周期性混成随机任务调度方法 |
CN111356984A (zh) * | 2019-01-21 | 2020-06-30 | 深圳市大疆创新科技有限公司 | 任务显示方法及装置 |
CN109947058A (zh) * | 2019-02-15 | 2019-06-28 | 北京空间飞行器总体设计部 | 一种航天器多项自主管理功能状态控制方法 |
CN109947058B (zh) * | 2019-02-15 | 2020-08-18 | 北京空间飞行器总体设计部 | 一种航天器多项自主管理功能状态控制方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102004664A (zh) | 一种空间飞行器嵌入式实时操作系统调度方法 | |
Zhang et al. | Enabling in-situ execution of coupled scientific workflow on multi-core platform | |
CN102541640B (zh) | 一种集群gpu资源调度系统和方法 | |
US8751556B2 (en) | Processor for large graph algorithm computations and matrix operations | |
US7647590B2 (en) | Parallel computing system using coordinator and master nodes for load balancing and distributing work | |
CN102902512B (zh) | 一种基于多线程编程及消息队列的多线程并行处理方法 | |
US8996464B2 (en) | Efficient partitioning techniques for massively distributed computation | |
US8695005B2 (en) | Model for hosting and invoking applications on virtual machines in a distributed computing environment | |
US20130283286A1 (en) | Apparatus and method for resource allocation in clustered computing environment | |
US20140331235A1 (en) | Resource allocation apparatus and method | |
CN103197976A (zh) | 异构系统的任务处理方法及装置 | |
US9747132B2 (en) | Multi-core processor using former-stage pipeline portions and latter-stage pipeline portions assigned based on decode results in former-stage pipeline portions | |
CN104123304A (zh) | 数据驱动的并行排序系统和方法 | |
CN103793272A (zh) | 一种周期性任务调度方法及系统 | |
CN103279390A (zh) | 一种面向小作业优化的并行处理系统 | |
CN104360824A (zh) | 一种数据合并的方法和装置 | |
CN101408850B (zh) | 一种在任务流方式下求解复杂问题的方法 | |
CN102708009A (zh) | 一种基于cuda实现多任务共享gpu的方法 | |
CN102790698A (zh) | 一种基于节能树的大规模计算集群任务调度方法 | |
CN104239134A (zh) | 一种众核系统的任务管理方法和装置 | |
US20160034528A1 (en) | Co-processor-based array-oriented database processing | |
CN106201695A (zh) | 适用于嵌入式软件系统的多任务调度方法 | |
CN103309734A (zh) | 基于优先级分组的嵌入式任务调度方法 | |
Shu-Jun et al. | Optimization and research of hadoop platform based on fifo scheduler | |
CN110597627A (zh) | 基于虚拟fpga的数据库运算加速装置及加速方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20110406 |