CN110737522A - 一种嵌入式操作系统的待机任务调度方法 - Google Patents
一种嵌入式操作系统的待机任务调度方法 Download PDFInfo
- Publication number
- CN110737522A CN110737522A CN201910985099.8A CN201910985099A CN110737522A CN 110737522 A CN110737522 A CN 110737522A CN 201910985099 A CN201910985099 A CN 201910985099A CN 110737522 A CN110737522 A CN 110737522A
- Authority
- CN
- China
- Prior art keywords
- task
- priority
- ready
- scheduling
- tasks
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/4881—Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种嵌入式操作系统的待机任务调度方法,步骤1,将任务就绪表用一个字节的8个bit位表示,用户任务分为与字节的bit位从低位到高位一一对应的1至8的8个优先级,且将定系统空闲任务优先级为0;步骤2,事件触发系统响应,系统激活任务挂起表中优先级最高的任务,并判断是否小于当前正执行的任务优先级,是则执行步骤2等待下一个事件触发;否则挂起当前正执行的任务,执行步骤3;步骤3,系统调度程序查询任务就绪表,并按任务就绪表所属字节形成的任务号调度优先级最高的已就绪任务运行;步骤4,完成对应任务的调度并执行步骤2。本发明空闲任务不单独占用任务就绪表的字节位,减少了系统在硬件内存资源上的开销,降低成本。
Description
技术领域
本发明涉及嵌入系统技术领域,尤其涉及一种嵌入式操作系统的待机任务调度方法。
背景技术
搭载运行嵌入式操作系统的物联网终端,如采用查表方式的优先级位图算法,其空闲任务都是占用任务表的一个任务位,并在优先级任务表中配置最低优先级;即用户任务数要小于任务表设定的最大任务数;当系统资源丰富时,这不是什么问题,但当系统资源小,所搭载的嵌入式操作系统需要考虑对资源节俭,尽可能多的把资源留给用户应用任务。
如图1所示,现有的采用一个字节的优先级任务表的优先级从低位到高位依次升高的方式,其空闲任务和用户任务均占用字节的一位。
发明内容
本发明的目的在于提供一种嵌入式操作系统的待机任务调度方法。
本发明采用的技术方案是:
一种嵌入式操作系统的待机任务调度方法,其包括以下步骤;
步骤1,将用户任务分为1至8的8个优先级且将定系统空闲任务优先级设为最低的0,任务就绪表用一个字节的8个bit位表示,字节的bit位从低位到高位分别与用户任务优先级由低至高一一对应;
步骤2,当事件触发系统响应,系统激活任务挂起表中优先级最高的任务,即将任务挂起表中优先级最高对应的bit位设置为0,同时对任务就绪表对应bit位设置为1;
如果激活的任务优先级小于当前正执行的任务,执行步骤2等待下一个事件触发;否则挂起当前正执行的任务,即将当前任务优先级对应bit位在任务挂起表中设置为1,在任务就绪表中设置为0,执行步骤3,进行系统调度;
步骤3,系统调度程序查询任务就绪表,并按任务就绪表所属字节形成的任务号调度优先级最高的已就绪任务运行;
步骤4,完成对应任务的调度并执行步骤2。
进一步的,步骤1中任务的优先级与任务号取值相同。
进一步的,步骤2中当任务就绪表的每个bit位均为0时,表示系统空闲。
进一步的,步骤3中查询任务就绪表的任务优先级为0时,调度系统空闲任务运行。
进一步的,步骤3中查询任务就绪表的具体步骤如下:
步骤3-1,获取查询任务就绪表所属字节的数据;
步骤3-2,判断该字节的高4位是否为0;是则,执行步骤3-5;否则,执行步骤3-3;
步骤3-3,将任务就绪表所属字节进行右移4位操作,并计算获取移位的任务优先级数值作为高4位任务优先级;
步骤3-4,将高4位任务优先级加低4位任务优先级偏移量的值4后作为最高优先级任务号,并执行步骤3-6;
步骤3-5,计算获取任务就绪表所属字节的低4位的任务优先级数值作为最高优先级任务号;
步骤3-6,最高优先级任务号返回至系统调度程序。
本发明采用以上技术方案,将用户任务分为1至8的8个优先级且将定系统空闲任务优先级设为最低的0,任务就绪表用一个字节的8个bit位表示,字节的bit位从低位到高位分别与用户任务优先级由低至高一一对应;当任务就绪表的每个bit位均为0时,表示系统空闲。任务编号取值范围和优先级取值相同。当用户任务对应的任务号就绪时,系统调度程序按任务号调度优先级最高的就绪任务运行。空闲任务是在所有用户任务都挂起的情况下运行,即任务就绪表的每个bit位都为0时,系统调度查到的任务优先级是0,就调度空闲任务运行。本发明采用查表方式的优先级位图算法,空闲任务不单独占用任务就绪表的字节位。本发明的方法减少了系统在硬件内存资源上的开销,降低成本。
附图说明
以下结合附图和具体实施方式对本发明做进一步详细说明;
图1为现有技术中优先级任务表示意图;
图2为本发明的任务就绪表示意图;
图3为本发明的高优先级任务查询转换表PrioTransTbl数据结构示意图;
图4为本发明查询任务就绪表的流程示意图。
具体实施方式
如图2-4之一所示,本发明公开了一种嵌入式操作系统的待机任务调度方法,其包括以下步骤;
步骤1,将用户任务分为1至8的8个优先级且将定系统空闲任务优先级设为最低的0,任务就绪表用一个字节的8个bit位表示,字节的bit位从低位到高位分别与用户任务优先级由低至高一一对应;如图2所示,为任务就绪表(一个字节)TaskRdyMap数据结构。进一步的,步骤1中任务的优先级与任务号取值相同。
具体地,最大的任务数为8个,用户任务可以取1~8个之间,这样任务就绪表、任务挂起表都可以只用一个字节的8个位来代表,系统内存开销极小。
步骤2,当事件触发系统响应,系统激活任务挂起表中优先级最高的任务,即将任务挂起表中优先级最高对应的bit位设置为0,同时对任务就绪表对应bit位设置为1;
当激活的任务优先级小于当前正执行的任务,执行步骤2等待下一个事件触发;否则挂起当前正执行的任务,即将当前任务优先级对应bit位在任务挂起表中设置为1,在任务就绪表中设置为0,执行步骤3,进行系统调度;
具体地,一个字节每个位表示一个任务所对应的状态,置“1”表示对应状态有效,“0”表示无效。其字节的位从低位到高位对应任务优先级依次升高,即优先级大小对应该字节中位的二进制数值的取值,bit0对应的任务优先级1最低,bit7位对应的优先级8最高,任务编号取值范围和优先级取值相同,也是1~8。这样两者可以统一起来,用任务号代表任务的优先级大小。用户任务全满时任务表字节数值为最大值255,全空时任务表字节数值为最小值0,这样就可以把0做为系统空闲任务的任务编号,同时其对应的优先级大小0也是最小的,正好符合系统空闲任务比用户任务优先级小的特性,即当任务就绪表的每个bit位均为0时,表示系统空闲,不占用任务表的空间,又可以实现系统对所有任务的统一管理和调度,减少了系统时间和内存资源上的开销。
步骤3,系统调度程序查询任务就绪表,并按任务就绪表所属字节形成的任务号调度优先级最高的已就绪任务运行;
当用户任务对应的任务号就绪时,系统调度程序按任务号调度优先级最高的就绪任务运行。空闲任务是在所有用户任务都挂起的情况下运行,即任务就绪表的每个bit位都为0时,系统调度查到的任务优先级是0,就调度空闲任务运行。任务就绪表TaskRdyMap数值对应的任务优先级关系如表1所示。
表1:任务就绪表TaskRdyMap数值对应的任务优先级关系表
二进制数值 | 十进制范围 | 优先级 | 任务ID | 任务类型 |
0000 0000b | 0 | 0 | 0 | 系统空闲任务 |
0000 0001b | 1 | 1 | 1 | 用户任务 |
0000 001xb | 2~3 | 2 | 2 | 用户任务 |
0000 01xxb | 4~7 | 3 | 3 | 用户任务 |
0000 1xxxb | 8~15 | 4 | 4 | 用户任务 |
0001xxxxb | 16~31 | 5 | 5 | 用户任务 |
001x xxxxb | 32~63 | 6 | 6 | 用户任务 |
01xx xxxxb | 64~127 | 7 | 7 | 用户任务 |
1xxx xxxxb | 128~255 | 8 | 8 | 用户任务 |
其中,表1中的x表示该位可取0或1两种值。由上表可以看出,当TaskRdyMap数值小于等于15(0x0f)时,可以用一个16字节的一维表直接查询得到;当大于15(0x0f)时,可按小于等于15(0x0f)查询得高4位任务优先级,再加上低4位任务优先级偏移量值4,即得最终优先级任务;这样就可以共用一个16字节的一维表来表示直接的映射关系,即高优先级任务查询转换表由256个字节减小到16个字节数。如图3所示,高优先级任务查询转换表PrioTransTbl数据结构。
进一步地,如图4所示,查询任务就绪表的具体步骤如下:
步骤3-1,获取查询任务就绪表所属字节的数据;
步骤3-2,判断该字节的高4位是否为0;是则,执行步骤3-5;否则,执行步骤3-3;
步骤3-3,将任务就绪表所属字节进行右移4位操作,并计算获取移位的任务优先级数值作为高4位任务优先级;
步骤3-4,将高4位任务优先级加低4位任务优先级偏移量的值4后作为最高优先级任务号,并执行步骤3-6;
步骤3-5,计算获取任务就绪表所属字节的低4位的任务优先级数值作为最高优先级任务号;
步骤3-6,最高优先级任务号返回至系统调度程序。
具体地,任务调度的示意代码如下:
1)任务调度处理
void Schedule(void){
……
//最高优先级就绪任务号=最高优先级任务查询函数(任务就绪表:即一个8位的字节)
OsRdyHighPrio=LookupHighPrioTable(TaskRdyMap);
……
}
2)最高优先级任务查询函数
步骤4,完成对应任务的调度并执行步骤2。
本发明采用以上技术方案,将用户任务分为1至8的8个优先级且将定系统空闲任务优先级设为最低的0,任务就绪表用一个字节的8个bit位表示,字节的bit位从低位到高位分别与用户任务优先级由低至高一一对应;当任务就绪表的每个bit位均为0时,表示系统空闲。任务编号取值范围和优先级取值相同。当用户任务对应的任务号就绪时,系统调度程序按任务号调度优先级最高的就绪任务运行。空闲任务是在所有用户任务都挂起的情况下运行,即任务就绪表的每个bit位都为0时,系统调度查到的任务优先级是0,就调度空闲任务运行。本发明采用查表方式的优先级位图算法,空闲任务不单独占用任务就绪表的字节位。本发明的方法减少了系统在硬件内存资源上的开销,降低成本。
Claims (5)
1.一种嵌入式操作系统的待机任务调度方法,其特征在于:其包括以下步骤;
步骤1,将用户任务分为1至8的8个优先级且将定系统空闲任务优先级设为最低的0,任务就绪表用一个字节的8个bit位表示,字节的bit位从低位到高位分别与用户任务优先级由低至高一一对应;
步骤2,当事件触发系统响应,系统激活任务挂起表中优先级最高的任务,即将任务挂起表中优先级最高对应的bit位设置为0,同时对任务就绪表对应bit位设置为1;
如果激活的任务优先级小于当前正执行的任务,执行步骤2等待下一个事件触发;否则挂起当前正执行的任务,即将当前任务优先级对应bit位在任务挂起表中设置为1,在任务就绪表中设置为0,执行步骤3,进行系统调度;
步骤3,系统调度程序查询任务就绪表,并按任务就绪表所属字节形成的任务号调度优先级最高的已就绪任务运行;
步骤4,完成对应任务的调度并执行步骤2。
2.根据权利要求1所述的一种嵌入式操作系统的待机任务调度方法,其特征在于:步骤1中任务的优先级与任务号取值相同。
3.根据权利要求1所述的一种嵌入式操作系统的待机任务调度方法,其特征在于:步骤2中当任务就绪表的每个bit位均为0时,表示系统空闲。
4.根据权利要求1所述的一种嵌入式操作系统的待机任务调度方法,其特征在于:步骤3中查询任务就绪表的任务优先级为0时,调度系统空闲任务运行。
5.根据权利要求1所述的一种嵌入式操作系统的待机任务调度方法,其特征在于:步骤3中查询任务就绪表的具体步骤如下:
步骤3-1,获取查询任务就绪表所属字节的数据;
步骤3-2,判断该字节的高4位是否为0;是则,执行步骤3-5;否则,执行步骤3-3;
步骤3-3,将任务就绪表所属字节进行右移4位操作,并计算获取移位的任务优先级数值作为高4位任务优先级;
步骤3-4,将高4位任务优先级加低4位任务优先级偏移量的值4后作为最高优先级任务号,并执行步骤3-6;
步骤3-5,计算获取任务就绪表所属字节的低4位的任务优先级数值作为最高优先级任务号;
步骤3-6,最高优先级任务号返回至系统调度程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910985099.8A CN110737522B (zh) | 2019-10-16 | 2019-10-16 | 一种嵌入式操作系统的待机任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910985099.8A CN110737522B (zh) | 2019-10-16 | 2019-10-16 | 一种嵌入式操作系统的待机任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110737522A true CN110737522A (zh) | 2020-01-31 |
CN110737522B CN110737522B (zh) | 2023-03-03 |
Family
ID=69269176
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910985099.8A Active CN110737522B (zh) | 2019-10-16 | 2019-10-16 | 一种嵌入式操作系统的待机任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110737522B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160530A (ja) * | 1993-12-03 | 1995-06-23 | Nec Corp | デバッグ方式 |
CN101178664A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 实时操作系统中的任务调度方法及系统 |
CN101751289A (zh) * | 2008-12-19 | 2010-06-23 | 黄强 | 一种嵌入式实时操作系统的混合调度方法 |
US20100242041A1 (en) * | 2009-03-17 | 2010-09-23 | Qualcomm Incorporated | Real Time Multithreaded Scheduler and Scheduling Method |
CN102063325A (zh) * | 2011-01-06 | 2011-05-18 | 哈尔滨工业大学 | 一种嵌入51系列单片机的多任务实时操作系统的实现方法 |
KR20130094889A (ko) * | 2012-02-17 | 2013-08-27 | 한국전자통신연구원 | 실시간 운영체제의 태스크 스케줄링 방법 |
US20150293793A1 (en) * | 2014-04-09 | 2015-10-15 | Samsung Electronics Co., Ltd. | Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system |
CN106201695A (zh) * | 2016-07-15 | 2016-12-07 | 郑州飞机装备有限责任公司 | 适用于嵌入式软件系统的多任务调度方法 |
CN107273141A (zh) * | 2017-07-10 | 2017-10-20 | 无锡走向智能科技有限公司 | 嵌入式实时操作系统 |
-
2019
- 2019-10-16 CN CN201910985099.8A patent/CN110737522B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH07160530A (ja) * | 1993-12-03 | 1995-06-23 | Nec Corp | デバッグ方式 |
CN101178664A (zh) * | 2007-12-12 | 2008-05-14 | 北京中星微电子有限公司 | 实时操作系统中的任务调度方法及系统 |
CN101751289A (zh) * | 2008-12-19 | 2010-06-23 | 黄强 | 一种嵌入式实时操作系统的混合调度方法 |
US20100242041A1 (en) * | 2009-03-17 | 2010-09-23 | Qualcomm Incorporated | Real Time Multithreaded Scheduler and Scheduling Method |
CN102063325A (zh) * | 2011-01-06 | 2011-05-18 | 哈尔滨工业大学 | 一种嵌入51系列单片机的多任务实时操作系统的实现方法 |
KR20130094889A (ko) * | 2012-02-17 | 2013-08-27 | 한국전자통신연구원 | 실시간 운영체제의 태스크 스케줄링 방법 |
US20150293793A1 (en) * | 2014-04-09 | 2015-10-15 | Samsung Electronics Co., Ltd. | Method and apparatus for providing a preemptive task scheduling scheme in a real time operating system |
CN106201695A (zh) * | 2016-07-15 | 2016-12-07 | 郑州飞机装备有限责任公司 | 适用于嵌入式软件系统的多任务调度方法 |
CN107273141A (zh) * | 2017-07-10 | 2017-10-20 | 无锡走向智能科技有限公司 | 嵌入式实时操作系统 |
Non-Patent Citations (6)
Title |
---|
俞佳敏等: "实时操作系统μC/OS-II最大优先级数扩展实现" * |
刘胜等: "μC/O S-Ⅱ中最高优先级查找算法分析" * |
宋玉琴等: "RTOS最高优先级就绪任务查找算法优化" * |
屈召贵等: "Cortex-M3的μC/OS-Ⅱ任务调度硬件指令实现" * |
简岩等: "实时操作系统μC/OS-Ⅱ子任务扩展的一种改进方法" * |
赵国富等: "一种μC/OS-Ⅱ中任务调度机制的改进方法" * |
Also Published As
Publication number | Publication date |
---|---|
CN110737522B (zh) | 2023-03-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108459913B (zh) | 数据并行处理方法、装置及服务器 | |
CN113296929A (zh) | 基于云计算的资源匹配方法、装置及系统 | |
CN110134738A (zh) | 分布式存储系统资源预估方法、装置 | |
CN110362450A (zh) | 一种日志数据采集方法、装置及计算机可读存储介质 | |
CN102915344A (zh) | 一种sql语句处理方法及装置 | |
CN107798111B (zh) | 一种分布式环境中大批量导出数据的方法 | |
CN112817763A (zh) | 基于表函数的类脑超算任务队列调度方法、系统以及计算机存储介质 | |
CN110737522B (zh) | 一种嵌入式操作系统的待机任务调度方法 | |
CN113127173B (zh) | 一种异构感知的集群调度方法及装置 | |
CN106874429B (zh) | 一种标准sql转换成全文检索标准查询的方法 | |
US11556878B2 (en) | Systems and methods for managing organizational structures | |
US9298505B2 (en) | Time and space-deterministic task scheduling apparatus and method using multi-dimensional scheme | |
CN111078384A (zh) | 核心数据迁移的方法、装置、计算机设备及存储介质 | |
US7739300B2 (en) | System and method for processing a prioritizing protocol | |
US10776429B2 (en) | Optimizing memory usage for a HyperLogLog estimator | |
CN113867944A (zh) | 一种基于强化学习的异构MapReduce集群推测执行调度方法 | |
CN106648834A (zh) | 基于批装箱问题的虚拟机调度方法 | |
GB2520943A (en) | Memory Allocation | |
CN111930642A (zh) | 缓存管理方法、电子设备以及缓存管理装置 | |
KR101725408B1 (ko) | 실시간 운영체제의 태스크 스케줄링 방법 | |
CN107257550B (zh) | 一种信号处理方法、基站及计算机存储介质 | |
CN110895539A (zh) | 一种应用系统的二级缓存方法 | |
CN116540990B (zh) | 基于嵌入式实现电子产品的代码集成方法及装置 | |
US11693782B2 (en) | Cache management method using object-oriented manner and associated microcontroller | |
CN113946597A (zh) | 多模态大数据系统下的数据存储方法、装置、设备和介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |