CN116126491A - 一种嵌入式软件任务分时调度方法 - Google Patents

一种嵌入式软件任务分时调度方法 Download PDF

Info

Publication number
CN116126491A
CN116126491A CN202211635453.2A CN202211635453A CN116126491A CN 116126491 A CN116126491 A CN 116126491A CN 202211635453 A CN202211635453 A CN 202211635453A CN 116126491 A CN116126491 A CN 116126491A
Authority
CN
China
Prior art keywords
task
execution
time
executed
management queue
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
Application number
CN202211635453.2A
Other languages
English (en)
Inventor
陈俐均
姜海峰
梁新建
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijign Institute of Aerospace Control Devices
Original Assignee
Beijign Institute of Aerospace Control Devices
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijign Institute of Aerospace Control Devices filed Critical Beijign Institute of Aerospace Control Devices
Priority to CN202211635453.2A priority Critical patent/CN116126491A/zh
Publication of CN116126491A publication Critical patent/CN116126491A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本发明公开了一种嵌入式软件任务分时调度方法,包括:初始化各任务执行基本信息,设置任务管理队列;将要执行的任务添加至任务管理队列中;分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,判断是否需要执行该任务管理队列成员相应任务,如果需要执行该任务管理队列成员相应任务,则按照执行频率调用任务执行函数,直至该任务执行完成或超出执行时间,根据是否允许自删除标志,将该任务从队列中删除。本发明解决了现有嵌入式软件任务调度效率差的问题。

Description

一种嵌入式软件任务分时调度方法
技术领域
本发明属于嵌入式软件任务调度技术领域,尤其涉及一种嵌入式软件任务分时调度方法。
背景技术
在嵌入式软件任务调度领域中,通常的程序设计架构为:在主流程中依次查询各任务标志,如果某一任务标志置位,则调用该任务执行函数,待该任务执行结束后,程序返回到主流程中,查询是否有新的任务标志置位,开启下一个任务执行流程。这种任务调度方式未对执行的任务进行统一调度,程序设计上较为繁琐冗余;在同一时间只能响应一个任务,对于多任务执行项目而言,执行效率较差。
发明内容
本发明解决的技术问题是:克服现有技术的不足,提供了一种嵌入式软件任务分时调度方法,解决了现有嵌入式软件任务调度效率差的问题。
本发明目的通过以下技术方案予以实现:一种嵌入式软件任务分时调度方法,包括:初始化各任务执行基本信息,设置任务管理队列;将要执行的任务添加至任务管理队列中;分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,判断是否需要执行该任务管理队列成员相应任务,如果需要执行该任务管理队列成员相应任务,则按照执行频率调用任务执行函数,直至该任务执行完成或超出执行时间,根据是否允许自删除标志,将该任务从队列中删除。
上述嵌入式软件任务分时调度方法中,任务执行基本信息包括:任务代号,不同任务代号设置不同,作为唯一标识区别不同任务;任务初始化函数,包含运行该任务的一些初始化配置信息;任务执行函数,实现任务的具体执行过程;任务执行完成函数,实现任务执行完成后需要执行的动作;任务超时处理函数,实现任务超时后需要执行的动作;任务执行频率计数,在任务调度函数中进行累加,用于控制任务运行周期;任务执行频率,用于设置任务运行的周期;任务执行时长,在任务调度函数中进行累加,用于记录任务运行总时长;任务执行超时时长,用于设置任务最长运行时间;允许自删除标志,用于识别任务结束后是否允许自动删除任务。
上述嵌入式软件任务分时调度方法中,任务管理队列的队列基本信息包括:任务执行标志,表示任务是否需要进行执行;任务变量,用任务执行基本信息表示不同任务。
上述嵌入式软件任务分时调度方法中,设置任务管理队列包括:统一管理涉及的所有任务,任务管理队列中每个变量基本单元为任务管理队列的队列基本信息,该任务管理队列管理所有任务的添加和删除。
上述嵌入式软件任务分时调度方法中,在所述将要执行的任务添加至任务管理队列中,将要执行的任务可通过通讯接口接收任务执行指令、或按照既定的任务执行流程进行确定。
上述嵌入式软件任务分时调度方法中,在所述将要执行的任务添加至任务管理队列中,添加过程为:查询任务管理队列中是否已有本次添加的任务,如果任务已存在,则直接返回添加完成;否则,执行本次添加任务的初始化函数,设置任务执行标志为1,从任务管理队列起始地址查询第一个未使用的成员位置,将任务添加至该位置中。
上述嵌入式软件任务分时调度方法中,判断是否需要执行该任务管理队列成员相应任务包括:判断任务执行标志是否为1,若为1则在该时间片需要执行该任务管理队列成员相应任务。
上述嵌入式软件任务分时调度方法中,在则按照执行频率调用任务执行函数中,在每个时间片内,任务执行频率计数值进行累加,若计数值到达任务执行频率,则调用任务执行函数。
上述嵌入式软件任务分时调度方法中,所述任务执行完成后,调用任务执行完成函数,实现任务完成后的需要执行的动作;超出执行时间,则调用任务超时处理函数,若任务执行时长超过任务执行超时时长,则判定任务超出执行时间。
上述嵌入式软件任务分时调度方法中,将该任务从队列中删除包括:在队列中按照任务号查询本任务,设置任务执行标志为0,将该任务从队列中删除。
本发明与现有技术相比具有如下有益效果:
(1)现有技术未对执行的任务进行统一调度,程序设计上较为繁琐冗余。本发明设计任务管理队列和任务调度函数,统一调度待执行任务,优化了程序设计架构。
(2)现有技术在主流程中依次查询各任务标志,如果某一任务标志置位,则调用该任务执行函数,待该任务执行结束后,程序返回到主流程中,查询是否有新的任务标志置位,开启下一个任务执行流程,该技术在同一时间只能响应一个任务。本发明在程序主流程中分时调用任务调度函数,将任务运行周期划分为多个时间片,每个时间片查询任务队列,实现分时调用多重任务的功能,可有效提高任务执行效率。
(3)本发明设计方法通用有效,有助于嵌入式软件多种任务调度设计项目直接移植使用,减少后续维护工作。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1是本发明实施例提供的添加任务流程图;
图2是本发明实施例提供的任务调度函数流程图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
图1是本发明实施例提供的添加任务流程图;图2是本发明实施例提供的任务调度函数流程图。如图1和图2所示,该嵌入式软件任务分时调度方法包括如下步骤:
(1)、初始化各任务执行基本信息,设置任务管理队列,统一管理涉及的所有任务。
所述各任务执行基本信息通过一个结构体变量进行描述,任务基本信息如下:
(1.1)、任务代号,不同任务代号设置不同,作为唯一标识区别不同任务;
(1.2)、任务初始化函数,包含运行该任务的一些初始化配置信息;
(1.3)、任务执行函数,实现任务的具体执行过程;
(1.4)、任务执行完成函数,实现任务执行完成后需要执行的动作;
(1.5)、任务超时处理函数,实现任务超时后需要执行的动作;
(1.6)、任务执行频率计数,在任务调度函数中进行累加,用于控制任务运行周期;
(1.7)、任务执行频率,用于设置任务运行的周期;
(1.8)、任务执行时长,在任务调度函数中进行累加,用于记录任务运行总时长;
(1.9)、任务执行超时时长,用于设置任务最长运行时间;
(1.10)、允许自删除标志,用于识别任务结束后是否允许自动删除任务。
所述任务管理队列通过一个结构体变量进行描述,该队列管理所有任务的添加和删除,队列基本信息如下:
(2.1)、任务执行标志,表示任务是否需要进行执行;
(2.2)、任务变量,用任务基本信息表示不同任务。
(2)、将要执行的任务添加至任务管理队列中,添加过程为:查询任务管理队列中是否已有本次添加的任务,如果任务已存在,则直接返回添加完成;否则,执行本次添加任务的初始化函数,设置权利要求3所述任务执行标志为1,从任务管理队列起始地址查询第一个未使用的成员位置,将任务添加至该位置中。
所述将要执行的任务可通过通讯接口接收任务执行指令、或按照既定的任务执行流程进行确定。
(3)、在程序主流程中分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,如果需要执行相应任务,则按照执行频率调用任务执行函数,直至任务执行完成或超出执行时间,根据是否允许自删除标志,将任务从队列中删除,完成本任务的执行流程;在下一个时间片查询队列下一个成员,判断是否需要执行下一个任务,通过这种方式可实现任务的分时调用,提高程序执行效率。
所述在程序主流程中分时调用任务调度函数,将任务运行周期划分为多个时间片,每个时间片查询任务管理队列成员,判断任务执行标志是否为1,若为1则在该时间片启动相应任务。
所述如果需要执行相应任务,则按照执行频率调用任务执行函数,在所述的每个时间片内,任务执行频率计数值进行累加,若计数值到达任务执行频率,则调用任务执行函数。
所述任务执行完成后,调用任务执行完成函数,实现任务完成后的需要执行的动作。
所述根据是否允许自删除标志,将任务从队列中删除,完成本任务的执行流程;任务删除过程为:在队列中按照任务号查询本任务,设置任务执行标志为0,将本任务从队列中删除。
所述任务超出执行时间,则调用任务超时处理函数,具体的:任务执行时长超过任务执行超时时长,则判定任务超出执行时间。
在本申请实施例所提供的方案中,以控制电路箱A温度和控制电路箱B温度两个任务为例,简称为任务A和任务B,包括如下步骤:
(1)、设置2个结构体变量TempCtrlA和TempCtrolB代表任务A和任务B,初始化TempCtrlA和TempCtrolB基本信息,结构体类型为TaskInf。示例如下
(1.1)、任务A代号为0x0A,任务B代号为0x0B;
(1.2)、设置任务A和B的初始化函数,包含控温的变量初始化操作;
(1.3)、设置任务A和B的执行函数,实现各自的控温操作;
(1.4)、设置任务A和B的执行完成函数,实现控温完成后的变量设置操作;
(1.5)、设置任务A和B的超时处理函数,实现控温超时后需要执行的动作;
(1.6)、设置任务A和B的执行频率计数变量,初始化为0;
(1.7)、设置任务A的执行频率为20ms,任务B的执行频率为20ms;
(1.8)、设置任务A和B的任务执行时长,初始化为0;
(1.9)、设置任务A的执行超时时长为20min,设置任务B的执行超时时长为20min;
(1.10)、设置任务A和B的允许自删除标志为1,即允许任务结束后自动删除任务。
设置任务管理队列TaskManageQueue[2],变量类型为结构体变量TaskQueue。示例如下
(2.1)、任务执行标志TaskExcute,队列各变量该标志均初始化为0;
(2.2)、TaskInf类型的任务变量TaskType。
(2)、将任务A和任务B添加至任务管理队列中。添加过程如图1所示,示例如下
查询任务管理队列TaskManageQueue[0]的任务执行标志TaskExcute是否为1,且TaskType的代号是否为0x0A,如果两个条件同时满足,则表示任务A已经添加成功,直接返回添加完成;否则查询TaskManageQueue[1]是否满足任务A已加入条件。若查询完整个队列,都不包含任务A,且TaskManageQueue[0]的TaskExcute为0,则将TaskManageQueue[0]的TaskExcute设置为1,将TempCtrlA赋值给TaskManageQueue[0]的TaskType,执行任务A的初始化函数。
与上述步骤一致,将任务B添加至任务队列TaskManageQueue[1]中。
(3)、在程序主流程中分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,如果需要执行相应任务,则按照执行频率调用任务执行函数,实现任务的分时调用。任务调度函数流程如图2所示,示例如下
由于任务执行周期为20ms,将主流程执行周期设置为10ms,在第奇数个10ms内,查询TaskManageQueue[0]的标志TaskExcute,在第偶数个10ms内,查询TaskManageQueue[1]的标志TaskExcute。
在第奇数个10ms内,若TaskManageQueue[0]的标志TaskExcute为1,则调用任务调度函数Task_Schedule(),该函数具体流程如下
(3.1)、任务A的执行频率计数值进行累加,若累加至1,则表示执行频率已满足20ms,将计数值进行清零,调用任务A的执行函数;
(3.2)、若任务A执行完成,调用任务A的执行完成函数,实现任务完成后的需要执行的动作;
(3.3)任务A执行完成后,根据允许自删除标志,在队列中按照任务号查询本任务,将TaskManageQueue[0]的务执行标志TaskExcute设置为0,将本任务从队列中删除;
(3.4)、任务A的执行时长进行累加计数,每累加1次代表20ms,将该计数值与执行超时时长20min进行比较,若超出超时时长,则调用任务A的超时处理函数,结束调度。
在第偶数个10ms内,若TaskManageQueue[1]的标志TaskExcute为1,则调用任务调度函数Task_Schedule(),具体调用流程与任务A一致。
现有技术未对执行的任务进行统一调度,程序设计上较为繁琐冗余。本发明设计任务管理队列和任务调度函数,统一调度待执行任务,优化了程序设计架构。
现有技术在主流程中依次查询各任务标志,如果某一任务标志置位,则调用该任务执行函数,待该任务执行结束后,程序返回到主流程中,查询是否有新的任务标志置位,开启下一个任务执行流程,该技术在同一时间只能响应一个任务。本发明在程序主流程中分时调用任务调度函数,将任务运行周期划分为多个时间片,每个时间片查询任务队列,实现分时调用多重任务的功能,可有效提高任务执行效率。
本发明设计方法通用有效,有助于嵌入式软件多种任务调度设计项目直接移植使用,减少后续维护工作。
本发明虽然已以较佳实施例公开如上,但其并不是用来限定本发明,任何本领域技术人员在不脱离本发明的精神和范围内,都可以利用上述揭示的方法和技术内容对本发明技术方案做出可能的变动和修改,因此,凡是未脱离本发明技术方案的内容,依据本发明的技术实质对以上实施例所作的任何简单修改、等同变化及修饰,均属于本发明技术方案的保护范围。

Claims (10)

1.一种嵌入式软件任务分时调度方法,其特征在于包括:
初始化各任务执行基本信息,设置任务管理队列;
将要执行的任务添加至任务管理队列中;
分时调用任务调度函数,将任务执行周期划分为多个时间片,每个时间片查询任务管理队列成员,判断是否需要执行该任务管理队列成员相应任务,如果需要执行该任务管理队列成员相应任务,则按照执行频率调用任务执行函数,直至该任务执行完成或超出执行时间,根据是否允许自删除标志,将该任务从队列中删除。
2.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:任务执行基本信息包括:
任务代号,不同任务代号设置不同,作为唯一标识区别不同任务;
任务初始化函数,包含运行该任务的一些初始化配置信息;
任务执行函数,实现任务的具体执行过程;
任务执行完成函数,实现任务执行完成后需要执行的动作;
任务超时处理函数,实现任务超时后需要执行的动作;
任务执行频率计数,在任务调度函数中进行累加,用于控制任务运行周期;
任务执行频率,用于设置任务运行的周期;
任务执行时长,在任务调度函数中进行累加,用于记录任务运行总时长;
任务执行超时时长,用于设置任务最长运行时间;
允许自删除标志,用于识别任务结束后是否允许自动删除任务。
3.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:任务管理队列的队列基本信息包括:
任务执行标志,表示任务是否需要进行执行;
任务变量。
4.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:设置任务管理队列包括:统一管理涉及的所有任务,任务管理队列中每个变量基本单元为任务管理队列的队列基本信息,该任务管理队列管理所有任务的添加和删除。
5.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:在所述将要执行的任务添加至任务管理队列中,将要执行的任务可通过通讯接口接收任务执行指令、或按照既定的任务执行流程进行确定。
6.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:在所述将要执行的任务添加至任务管理队列中,添加过程为:查询任务管理队列中是否已有本次添加的任务,如果任务已存在,则直接返回添加完成;否则,执行本次添加任务的初始化函数,设置任务执行标志为1,从任务管理队列起始地址查询第一个未使用的成员位置,将任务添加至该位置中。
7.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:判断是否需要执行该任务管理队列成员相应任务包括:判断任务执行标志是否为1,若为1则在该时间片需要执行该任务管理队列成员相应任务。
8.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:在则按照执行频率调用任务执行函数中,在每个时间片内,任务执行频率计数值进行累加,若计数值到达任务执行频率,则调用任务执行函数。
9.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:所述任务执行完成后,调用任务执行完成函数,实现任务完成后的需要执行的动作;
超出执行时间,则调用任务超时处理函数,若任务执行时长超过任务执行超时时长,则判定任务超出执行时间。
10.根据权利要求1所述的嵌入式软件任务分时调度方法,其特征在于:将该任务从队列中删除包括:在队列中按照任务号查询本任务,设置任务执行标志为0,将该任务从队列中删除。
CN202211635453.2A 2022-12-19 2022-12-19 一种嵌入式软件任务分时调度方法 Pending CN116126491A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211635453.2A CN116126491A (zh) 2022-12-19 2022-12-19 一种嵌入式软件任务分时调度方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211635453.2A CN116126491A (zh) 2022-12-19 2022-12-19 一种嵌入式软件任务分时调度方法

Publications (1)

Publication Number Publication Date
CN116126491A true CN116126491A (zh) 2023-05-16

Family

ID=86300010

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211635453.2A Pending CN116126491A (zh) 2022-12-19 2022-12-19 一种嵌入式软件任务分时调度方法

Country Status (1)

Country Link
CN (1) CN116126491A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421106A (zh) * 2023-12-11 2024-01-19 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117421106A (zh) * 2023-12-11 2024-01-19 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备
CN117421106B (zh) * 2023-12-11 2024-03-08 湖南行必达网联科技有限公司 一种嵌入式软件的任务调度方法、系统及设备

Similar Documents

Publication Publication Date Title
CN100392595C (zh) 暂停期间进行字节代码优化的方法和装置
US20160034533A1 (en) Database management system and method
CN103034554A (zh) 一种纠错重启以及自动判断启动的etl调度系统及方法
CN116126491A (zh) 一种嵌入式软件任务分时调度方法
CN111638953B (zh) 一种实现gpu虚拟化的方法、装置和存储介质
CN110990142A (zh) 并发任务处理方法、装置、计算机设备和存储介质
CN111507608B (zh) 工单预警方法、装置和存储介质
CN105718307B (zh) 进程管理方法及进程管理装置
CN109784647B (zh) 一种用于空间站的主动电位控制系统的任务调度方法
CN117217644B (zh) 一种物流作业任务的资源分配方法及装置
CN100383743C (zh) Java操作系统中实时任务调度方法
CN102573073B (zh) 一种终端物理层资源分配方法及系统
CN113119127A (zh) 一种rpa机器人的任务调度方法和系统
CN111538579B (zh) 一种嵌入式平台下的多任务运行方法
CN116126937A (zh) 作业调度方法、装置、电子设备及存储介质
CN113051005B (zh) 一种加载方法及装置
CN114035926A (zh) 应用线程调度方法、装置、存储介质及电子设备
CN115454603A (zh) 任务调度方法、装置、服务器及存储介质
CN115099666A (zh) 一种机器人调度方法和装置、电子设备
EP1011045B1 (en) Object-oriented job scheduler
CN107169129B (zh) 一种调度方法和装置
CN117093345B (zh) 任务链表的执行方法、装置、终端设备及存储介质
JPS6368934A (ja) タスクスケジユ−ル方式
CN112416539B (zh) 面向异构众核处理器的多任务并行调度方法
CN117112704A (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