CN112416546A - 多任务调度方法、电子装置和计算机存储介质 - Google Patents
多任务调度方法、电子装置和计算机存储介质 Download PDFInfo
- Publication number
- CN112416546A CN112416546A CN202011246810.7A CN202011246810A CN112416546A CN 112416546 A CN112416546 A CN 112416546A CN 202011246810 A CN202011246810 A CN 202011246810A CN 112416546 A CN112416546 A CN 112416546A
- Authority
- CN
- China
- Prior art keywords
- task
- scheduling
- ready
- queue
- running
- 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
- 238000000034 method Methods 0.000 title claims abstract description 71
- 239000000725 suspension Substances 0.000 claims abstract description 12
- 230000008569 process Effects 0.000 claims abstract description 11
- 230000004044 response Effects 0.000 claims abstract description 10
- 238000012217 deletion Methods 0.000 claims abstract description 5
- 230000037430 deletion Effects 0.000 claims abstract description 5
- 230000006870 function Effects 0.000 claims description 27
- 230000015654 memory Effects 0.000 claims description 25
- 238000004422 calculation algorithm Methods 0.000 claims description 9
- 238000004590 computer program Methods 0.000 claims description 6
- 238000007616 round robin method Methods 0.000 claims description 4
- 238000004891 communication Methods 0.000 description 9
- 238000012545 processing Methods 0.000 description 9
- 238000005516 engineering process Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 3
- 238000006467 substitution reaction Methods 0.000 description 2
- 241001522296 Erithacus rubecula Species 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000011084 recovery Methods 0.000 description 1
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
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5021—Priority
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种嵌入式系统的多任务调度方法、电子装置和计算机存储介质。所述多任务调度方法包括:任务调度内核初始化:至少包括定义挂起队列、定义就绪队列、设置系统时钟、配置任务计时器;创建任务:在创建任务的过程中至少指定任务的优先级和响应时间,并指定任务的函数指针;任务调度:根据调度策略,选择将要运行的就绪任务分配系统资源;任务删除:在所述挂起队列中查找已运行的任务,并将已运行的任务删除。该多任务调度方法能够允许多个任务并行,执行速度快,能够满足实时性要求。
Description
技术领域
本发明涉及计算机技术领域,更具体地涉及多任务调度方法、电子装置和计算机存储介质。
背景技术
嵌入式系统是一种嵌入机械或电气系统内部、具有专门功能和计算性能的计算机系统。主要适用于对于功能、可靠性、成本、体积、功耗等有严格要求和限制的应用领域。
随着嵌入式系统的发展,嵌入式软件的复杂程度越来越高,也因此在嵌入式系统软件开发中引入了嵌入式操作系统。嵌入式操作系统是一种支持嵌入式系统应用的操作系统软件,用于管理越来越复杂的系统资源,为嵌入式软件提供多任务的运行环境,使得嵌入式软件的开发更加便利,同时提高了系统的可靠性和稳定性。
在大部分的嵌入式操作系统中,多任务是以多线程的形式来实现的,从这类系统的角度来看,线程是竞争系统资源的最小运行单位,可竞争的系统资源包括系统处理器、输入/输出设备以及内存等。并且线程之间相互独立,并发运行,此类操作系统称作多线程操作系统。此类操作系统的代表产品有实时操作系统VxWorks、硬实时操作系统ThreadX和实时多任务操作系统Nucleus Plus、实时操作系统RT-Thread等。
但是对于一部分功能相对简单的嵌入式系统而言,使用嵌入式操作系统会有灵活度低复杂度高的问题,同时对嵌入式操作系统内核进行维护所花费的开销也不可小视。因此如何设计一种简单、灵活、轻量级的任务调度内核是目前亟待解决的技术问题。
发明内容
本发明实施例提供一种多任务调度方法、电子装置和计算机可读存储介质,以至少解决上述的问题之一。
根据本发明的第一方面,提供了一种嵌入式系统的多任务调度方法,所述多任务调度方法包括:
任务调度内核初始化:至少包括定义挂起队列、定义就绪队列、设置系统时钟、配置任务计时器;
创建任务:在创建任务的过程中至少指定任务的优先级和响应时间,并指定任务的函数指针;
任务调度:根据调度策略,选择将要运行的就绪任务分配系统资源;
任务删除:在所述挂起队列中查找已运行的任务,并将已运行的任务删除。
在一个示例中,在所述挂起队列中查找已运行的任务,并将已运行的任务删除,包括:
在所述挂起队列中查找已运行的任务,并将已运行的任务对应的函数指针置空,以删除任务。
在一个示例中,所述任务调度包括以下步骤:
保护现场:关闭中断,并保存当前运行的任务的上下文信息至该任务对应的控制块中;
运行任务:检查所述就绪队列中是否有就绪任务,其中,当有就绪任务时,通过调度算法取出所述就绪队列中的就绪任务,并调用任务运行函数将从所述就绪队列中取出的就绪任务设置为运行状态;
恢复现场:关闭中断,并调取所述上下文信息恢复现场,之后打开中断。
在一个示例中,所述调度算法包括:
当所述就绪队列中有等待时间超过允许等待时间的任务,则运行该任务;
当所述就绪队列中有优先级高的任务时则按照轮转法确定下一个就绪的优先级任务,当所述就绪队列中没有优先级高的任务时,则在相同优先级的队列中选择就绪任务。
在一个示例中,所述上下文信息包括以下信息中的一种或多种:当前各个寄存器的数据信息、堆伐、程序指针。
在一个示例中,调取所述上下文信息恢复现场,包括:
用保存在所述控制块中的所述上下文信息设置堆栈、程序指针和寄存器。
在一个示例中,所述任务调度内核初始化,还包括以下步骤:
创建主任务和至少一个空闲任务,其中,所述就绪队列配置为保证至少有一个任务正在运行,当没有任务准备就绪时,则将运行内部的空闲任务。
在一个示例中,所述方法用于MIPS架构芯片、ARM芯片或STM32芯片。
根据本发明的第二方面,提供了一种电子装置,所述电子装置包括:
存储器,用于存储可执行的程序指令;
处理器,用于执行所述存储器中存储的所述程序指令,使得所述处理器执行前述的多任务调度方法。
根据本发明的第三方面,提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现前述的多任务调度方法。
根据本发明实施例的多任务调度方法、电子装置和计算机可读存储介质,能够允许多个任务并行,执行速度快,能够满足实时性要求;仅包含调度程序,系统内核精简体量小;并行任务的数量只受到实际硬件条件的限制;并且,本申请的多任务调度方法对于用户而言更方便调用,用户不需要了解操作系统的原理也不需要了解底层的体系架构,只需要了解几个系统函数的调用即可,为用户程序提供了灵活性。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是根据本发明一个实施例的一种多任务调度方法的流程图;
图2是根据本发明另一个实施例的一种多任务调度方法的流程图;
图3是根据本发明实施例的电子装置的示意性框图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
虽然当前嵌入式操作系统风靡全球,可选的商用实时操作系统(Real TimeOperating System,简称RTOS)很多,但购买商业RTOS的成本高,而且不开源没法获取系统源码进行修改来配合实际的项目。而且由于商业RTOS具备较完善的功能,规模较大,需要的内存和外存资源较多,造成了移植到一些具体的单片机小系统上比较困难,而且对其系统内核进行维护也要花费不小的开销。针对一些功能相对简单的嵌入式系统,一个功能合适、规模较小的多任务调度系统就显得很有必要。这也有助于单片机应用程序编写的规范化和模块化。
同时,目前的嵌入式操作系统应用的平台多是运行在STM32这样的单片机上,成本相对较高且芯片缺乏自主权。针对这些情况,有必要对嵌入式操作系统的多任务调度方法进行改进,以至少部分的解决前述的技术问题。
鉴于上述问题的存在,本申请实施例提供一种嵌入式系统的多任务调度方法,所述多任务调度方法包括:任务调度内核初始化:至少包括定义挂起队列、定义就绪队列、设置系统时钟、配置任务计时器;创建任务:在创建任务的过程中至少指定任务的优先级和响应时间,并指定任务的函数指针;任务调度:根据调度策略,选择将要运行的就绪任务分配系统资源;任务删除:在所述挂起队列中查找已运行的任务,并将已运行的任务删除。
根据本发明实施例的多任务调度方法、电子装置和计算机可读存储介质,根据本申请的多任务调度方法,能够允许多个任务并行,执行速度快,能够满足实时性要求;仅包含调度程序,系统内核精简体量小;并行任务的数量只受到实际硬件条件的限制;并且,本申请的多任务调度方法对于用户而言更方便调用,用户不需要了解操作系统的原理也不需要了解底层的体系架构,只需要了解几个系统函数的调用即可,为用户程序提供了灵活性。
下面,参考图1和图2对本申请的嵌入式系统的多任务调度方法进行详细描述,在不冲突的前提下,本申请各个实施例的特征可以相结合。
作为示例,如图1所示,本申请的嵌入式系统的多任务调度方法包括以下步骤S1至步骤S4:
首先,在步骤S1中,任务调度内核初始化:至少包括定义挂起队列、定义就绪队列、设置系统时钟、配置任务计时器。
挂起队列中具有处于挂起状态的任务,其中,当挂起队列中的任务倒计时为零时,则进入就绪队列。其中设置系统时钟时,需要合理设计定时器的中断间隔时间,中断间隔时间直接影响任务等待时间更新的分辨率。任务计时器则可以用于对相应任务的等待时间、周转时间等进行计时,以便系统在适合的时机对调度适合的任务,分配系统资源。其中,系统资源可以包括处理器、存储器、I/O设备以及信息(数据和程序)等。系统资源(systemresource)意指是一个计算机系统中,限制其运算能力的任何实体或是虚拟的组成元件。
在一个示例中,任务调度内核初始化还包括创建主任务(例如创建主线程)和至少一个空闲任务(例如空闲线程),其中,所述就绪队列配置为保证至少有一个任务(例如线程)正在运行,当没有任务(例如线程)准备就绪时,则将运行内部的空闲任务(例如空闲线程)。通常一个进程至少包括一个线程,该线程也即称为主线程,一个进程从主线程的执行开始进而创建一个或多个空闲线程,这也就是基于多线程的多任务。
接着,在步骤S2中,创建任务:在创建任务的过程中至少指定任务的优先级和响应时间,并指定任务的函数指针。
示例性地,本申请实施例中的多任务是以多线程的形式来实现的,创建任务也即指创建线程,在创建线程的过程中至少指定线程的优先级和响应时间,并指定线程的函数指针。
每个线程设置一个“优先级”,优先级可以用整数表示,取值范围可以为0~10,也可以为其他适合的取值范围,0为最低优先级,10位最高优先级,当决定哪个线程需要调度时,首先查看是否存在优先级高的可调度线程,如果存在,就从中选择进行调度。
响应时间是提交请求和返回该请求的响应之间使用的时间,通常通过响应时间可以计算获得响应比,通常响应比越高优先级越高,那么等待时间越长的线程会相对其他等待时间较短的线程优先被调度。函数指针是指向函数的指针变量,通过函数指针使程序的可读性更强。
接着,在步骤S3中,任务调度:根据调度策略,选择将要运行的就绪任务分配系统资源。
多任务是以多线程的形式实现的,本申请的任务调度也即指线程调度,可以根据预设的调度策略选择合适运营的就绪线程分配资源。
在多线程操作系统中,其具有线程调度器。线程调度器根据预定的调度策略将处理器资源分配给合适的线程,得到了处理器资源的线程被调度运行。线程调度器可以为一个常驻内存的程序,不断地对线程队列进行扫描,利用特定的算法(例如时间片轮转法、优先级调度法、多级反馈队列调度法等)找出比当前占有中央处理器(CPU)的线程更有CPU使用权的线程,并从之前的线程中收回处理器,再使待运行的线程占用处理器。在一个示例中,线程调度方法是基于优先级的抢占式调度辅以同优先级之间的时间片轮转调度的混合调度策略。在这种多优先级轮转调度策略下,系统根据线程的功能和性能要求设置这两个关键调度参数:优先级和时间片。准备好可以运行的线程称为“就绪”线程,调度器根据不同的优先级队列进行调度,分配给线程系统资源。而时间片又决定了线程运行的时间,在线程使用完了它的时间片后,系统会剥夺该线程的资源,保存线程的上下文并将线程置入对应优先级队列的尾部,等待下一次调度。
在另一个示例中,如图2所示,任务调度的方法包括以下步骤:
首先,保护现场,包括:关闭中断,并保存当前运行的任务的上下文信息(也即当前任务断点信息)至该任务对应的控制块中,例如保存当前线程的现场例如上下文信息至线程控制块(TCB)中,所述上下文信息至少包括当前各个寄存器的数据信息(例如当前各个寄存器的值)、堆栈和程序指针等。
关闭中断例如关闭全局中断,其中全局中断包括内中断和外中断等,内中断即程序运行错误引起的中断,外中断即由外部设备、接口卡引起的中断。通过关中断,避免在保护现场过程中被中断打断,而影响信息的保存。
当任务以线程的形式实现时,控制块包括线程控制块(Thread Control Block),操作系统采用线程控制块的数据结构用来跟踪和维护线程的相关信息,这些信息包括线程的堆栈、调度参数、运行状态和代码等。每次创建或者运行结束后线程的运行状态信息会被保存在线程控制块中,下次将处理器资源重新分配给该线程时,操作系统会从该线程的线程控制块中取出上次保存的信息,并将该线程恢复到暂停前的状态继续正常运行。
接着,运行任务,包括:检查所述就绪队列中是否有就绪任务,也即检测就绪队列是否为空,其中,当有就绪任务时也即就绪队列不为空时,通过调度算法取出所述就绪队列中的就绪任务例如就绪线程,并调用任务运行函数将从所述就绪队列中取出的就绪任务设置为运行状态,若就绪队列为空时,则继续检查就绪队列。
可以采用任意适合的调度算法进行线程的调度,在一个示例中,所述调度算法包括以下步骤:当所述就绪队列中有等待时间超过允许等待时间的任务(例如线程),则运行该任务(例如线程);当所述就绪队列中有优先级高的任务(例如线程)时则按照轮转法确定下一个就绪的优先级任务(例如线程),当所述就绪队列中没有优先级高的任务(例如线程),则在相同优先级的队列中选择就绪任务(例如就绪线程)。这种实现方法,允许多个任务并行,保证所有任务都可以被执行,占用资源少,任务执行速度快,在满足实时性要求同时(也即保证优先级的任务的实时性),也可提供足够的灵活性,调用也极为便利,针对性和实用性非常强。
就绪线程按照先来先运行的原则排列成就绪队列,当所述就绪队列中有优先级高的任务(例如线程)时则按照轮转法确定下一个就绪的优先级任务(例如线程),包括:把系统资源例如处理器分配给位于就绪队列对首的就绪线程,并使其执行一个时间片,当执行的时间片用完时,中断请求,将该就绪线程送往就绪队列的队尾,并把处理器分配给当前位于对首的就绪线程,同时让其执行一个时间片,通过这样的方法能够保证就绪队列中的所有进程在给定时间内均能获得时间片的处理器执行时间,以使得优先级高的线程也能得到及时的调度运行。
最后,继续如图2所示,恢复现场,包括:关闭中断例如关闭全局中断,并调取所述上下文信息恢复现场,之后打开中断例如打开全局中断。
调取所述上下文信息恢复现场,包括:用保存在TCB中的上下文信息(例如环境信息)来设置中央处理器(CPU)堆栈、程序指针和寄存器等,以还原上下文,恢复现场。通过设置寄存器恢复各个寄存器中的值。
为了保证恢复现场的顺利进行,首先要关闭中断例如关闭全局中断,以使处理器不被其他的程度打扰,关闭中断从而不再响应其他的请求。
接着,继续参考图1,在步骤S4中,任务删除:在所述挂起队列中查找已运行的任务,并将已运行的任务删除。
可以采用任意适合的方法进行已运行的任务的删除,例如,在所述挂起队列中查找已运行的任务(例如已运行的线程),并将已运行的任务对应的函数指针置空。通过将以运行的任务删除,来释放其占用的堆栈和TCB等。
前述的多任务调度方法可以用于MIPS架构芯片、ARM芯片或STM32芯片或者其他架构的主控芯片。
综上所述,本发明的多任务调度方法与目前的RTOS相比,具有以下几点优点:
1)允许多个线程并行,线程执行速度快可以满足实时性要求;
2)仅包含调度程序,系统内核精简体量小;
3)并行任务的数量只受到实际硬件条件的限制,例如M2芯片的系统内部和外部随机存取存储器(英语:Random Access Memory,缩写:RAM)空间,通过合理的程序嵌套可允许多个线程同步执行,可以适用于一般体量小的嵌入式程序;
4)对于用户而言更方便调用,用户不需要了解操作系统的原理也不需要了解底层的芯片体系架构(例如MIPS架构芯片、ARM芯片或STM32芯片),只需要了解几个系统函数的调用即可,为用户程序提供了灵活性。同时提供了一个操作系统(Operating System,简称OS)平台,方便软件的模块化工作。
下面,参考附图3对本发明实施例的电子装置进行描述,其中,图3是根据本发明实施例的电子装置的示意性框图。
本申请实施例的电子装置可以是单片机,例如包括M2芯片的单片机,该单片机可以包括具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等。
又例如该电子装置可以是笔记本电脑、台式电脑、仪器仪表、家用电器、医用设备、航空航天、汽车中的电子装置等。
作为示例,如图3所示,本申请的电子装置300包括一个或多个存储器301、一个或多个处理器302等,这些组件通过总线系统和/或其它形式的连接机构(未示出)互连。应当注意,图3所示的电子装置300的组件和结构只是示例性的,而非限制性的,根据需要,电子装置300也可以具有其他组件和结构。
存储器301用于存储相关多任务调度过程中产生的各种数据信息和可执行程序指令,例如用于存储各种应用程序或实现各种具体功能的算法。可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(ROM)、硬盘、闪存等。
处理器302可以是中央处理单元(CPU)、图像处理单元(GPU)、专用集成电路(ASIC)、现场可编程门阵列(FPGA)或者具有数据处理能力和/或指令执行能力的其它形式的处理单元,并且可以控制电子装置300中的其它组件以执行期望的功能。例如,处理器能够包括一个或多个嵌入式处理器、处理器核心、微型处理器、逻辑电路、硬件有限状态机(FSM)、数字信号处理器(DSP)、图像处理单元(GPU)或它们的组合。
处理器302用于执行所述存储器301中存储的所述程序指令,使得所述处理器302执行前述实施例中的多任务调度方法,有关多任务调度方法的描述参考前文,在此不在重复描述。
在一个示例中,电子装置300还包括通信接口(未示出),用于电子装置300中各个组件之间以及电子装置300的各个组件和该系统之外的其他装置之间进行通信。
通信接口是可以是目前已知的任意通信协议的接口,例如有线接口或无线接口,其中,通信接口可以包括一个或者多个串口、USB接口、以太网端口、WiFi、有线网络、DVI接口,设备集成互联模块或其他适合的各种端口、接口,或者连接。电子装置300还可以接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G或它们的组合。在一个示例性实施例中,通信接口经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信接口还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在一个示例中,所述电子装置300还包括输入装置(未示出)可以是用户用来输入指令的装置,并且可以包括键盘、轨迹球、鼠标、麦克风和触摸屏等中的一个或多个,或其它控制按钮构成的输入装置。
在一个示例中,所述电子装置300还包括输出装置(未示出),可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
另外,本申请实施例还提供了一种计算机存储介质,例如计算机可读存储介质,其上存储有计算机程序。在所述计算机存储介质上可以存储一个或多个计算机程序指令,处理器可以运行存储器存储的所述程序指令,以实现本文所述的本申请实施例中(由处理器实现)的功能以及/或者其它期望的功能,例如以执行根据本申请实施例的多任务调度方法相应步骤,在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
例如,所述计算机可读存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
由于本申请实施例的电子装置和计算机存储介质可以执行前述的多任务调度方法相应步骤,因此,其也具有前述多任务调度方法的优点。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种嵌入式系统的多任务调度方法,其特征在于,所述多任务调度方法包括:
任务调度内核初始化:至少包括定义挂起队列、定义就绪队列、设置系统时钟、配置任务计时器;
创建任务:在创建任务的过程中至少指定任务的优先级和响应时间,并指定任务的函数指针;
任务调度:根据调度策略,选择将要运行的就绪任务分配系统资源;
任务删除:在所述挂起队列中查找已运行的任务,并将已运行的任务删除。
2.如权利要求1所述的所述多任务调度方法,其特征在于,在所述挂起队列中查找已运行的任务,并将已运行的任务删除,包括:
在所述挂起队列中查找已运行的任务,并将已运行的任务对应的函数指针置空,以删除任务。
3.如权利要求1所述的所述多任务调度方法,其特征在于,所述任务调度包括以下步骤:
保护现场:关闭中断,并保存当前运行的任务的上下文信息至该任务对应的控制块中;
运行任务:检查所述就绪队列中是否有就绪任务,其中,当有就绪任务时,通过调度算法取出所述就绪队列中的就绪任务,并调用任务运行函数将从所述就绪队列中取出的就绪任务设置为运行状态;
恢复现场:关闭中断,并调取所述上下文信息恢复现场,之后打开中断。
4.如权利要求3所述的所述多任务调度方法,其特征在于,所述调度算法包括:
当所述就绪队列中有等待时间超过允许等待时间的任务,则运行该任务;
当所述就绪队列中有优先级高的任务时则按照轮转法确定下一个就绪的优先级任务,当所述就绪队列中没有优先级高的任务时,则在相同优先级的队列中选择就绪任务。
5.如权利要求3所述的所述多任务调度方法,其特征在于,所述上下文信息包括以下信息中的一种或多种:当前各个寄存器的数据信息、堆伐、程序指针。
6.如权利要求5所述的所述多任务调度方法,其特征在于,调取所述上下文信息恢复现场,包括:
用保存在所述控制块中的所述上下文信息设置堆栈、程序指针和寄存器。
7.如权利要求1所述的所述多任务调度方法,其特征在于,所述任务调度内核初始化,还包括以下步骤:
创建主任务和至少一个空闲任务,其中,所述就绪队列配置为保证至少有一个任务正在运行,当没有任务准备就绪时,则将运行内部的空闲任务。
8.如权利要求1至7任一项所述的所述多任务调度方法,其特征在于,所述方法用于MIPS架构芯片、ARM芯片或STM32芯片。
9.一种电子装置,其特征在于,所述电子装置包括:
存储器,用于存储可执行的程序指令;
处理器,用于执行所述存储器中存储的所述程序指令,使得所述处理器执行如权利要求1至8任一项所述的多任务调度方法。
10.一种计算机存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现1至8任一项所述的多任务调度方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011246810.7A CN112416546A (zh) | 2020-11-10 | 2020-11-10 | 多任务调度方法、电子装置和计算机存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011246810.7A CN112416546A (zh) | 2020-11-10 | 2020-11-10 | 多任务调度方法、电子装置和计算机存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416546A true CN112416546A (zh) | 2021-02-26 |
Family
ID=74781643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011246810.7A Pending CN112416546A (zh) | 2020-11-10 | 2020-11-10 | 多任务调度方法、电子装置和计算机存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416546A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925633A (zh) * | 2021-05-12 | 2021-06-08 | 浙江华创视讯科技有限公司 | 嵌入式的任务调度方法、装置、电子设备及存储介质 |
CN113687930A (zh) * | 2021-08-30 | 2021-11-23 | 厦门市易联众易惠科技有限公司 | 支持自动晋升的任务管理方法、装置、设备及存储介质 |
CN113778643A (zh) * | 2021-08-13 | 2021-12-10 | 中电科芜湖通用航空产业技术研究院有限公司 | 无人机任务管理计算机软件架构系统和构型切换方法 |
CN113806142A (zh) * | 2021-08-30 | 2021-12-17 | 济南浪潮数据技术有限公司 | 一种数据恢复方法、装置及相关设备 |
CN113835861A (zh) * | 2021-09-24 | 2021-12-24 | 中汽创智科技有限公司 | 一种进程调度方法、装置、设备及存储介质 |
CN114880102A (zh) * | 2022-07-04 | 2022-08-09 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN115098258A (zh) * | 2022-06-23 | 2022-09-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
CN115658278A (zh) * | 2022-12-07 | 2023-01-31 | 中国电子科技集团公司第三十研究所 | 一种支持高并发协议交互的微任务调度机 |
CN116244050A (zh) * | 2023-02-07 | 2023-06-09 | 四川大学 | 一种基于高响应比的气动特性算例调度方法 |
CN116414464A (zh) * | 2023-05-26 | 2023-07-11 | 摩尔线程智能科技(北京)有限责任公司 | 调度任务的方法和装置、电子设备和计算机可读介质 |
CN116932227A (zh) * | 2023-09-14 | 2023-10-24 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
CN1825288A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式sram操作系统进程多队列调度的实现方法 |
CN1955931A (zh) * | 2005-09-30 | 2007-05-02 | 科威尔公司 | 在多核架构中进行调度 |
CN102043667A (zh) * | 2010-11-25 | 2011-05-04 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式操作系统的任务调度方法 |
CN103257864A (zh) * | 2013-05-09 | 2013-08-21 | 南京航空航天大学 | 嵌入式软件任务调度方法 |
-
2020
- 2020-11-10 CN CN202011246810.7A patent/CN112416546A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1409209A (zh) * | 2001-09-24 | 2003-04-09 | 深圳市中兴通讯股份有限公司上海第二研究所 | 一种多任务实时操作系统的实现方法 |
CN1955931A (zh) * | 2005-09-30 | 2007-05-02 | 科威尔公司 | 在多核架构中进行调度 |
CN1825288A (zh) * | 2006-03-31 | 2006-08-30 | 浙江大学 | 嵌入式sram操作系统进程多队列调度的实现方法 |
CN102043667A (zh) * | 2010-11-25 | 2011-05-04 | 深圳市科陆电子科技股份有限公司 | 一种嵌入式操作系统的任务调度方法 |
CN103257864A (zh) * | 2013-05-09 | 2013-08-21 | 南京航空航天大学 | 嵌入式软件任务调度方法 |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112925633A (zh) * | 2021-05-12 | 2021-06-08 | 浙江华创视讯科技有限公司 | 嵌入式的任务调度方法、装置、电子设备及存储介质 |
CN113778643A (zh) * | 2021-08-13 | 2021-12-10 | 中电科芜湖通用航空产业技术研究院有限公司 | 无人机任务管理计算机软件架构系统和构型切换方法 |
CN113687930A (zh) * | 2021-08-30 | 2021-11-23 | 厦门市易联众易惠科技有限公司 | 支持自动晋升的任务管理方法、装置、设备及存储介质 |
CN113806142A (zh) * | 2021-08-30 | 2021-12-17 | 济南浪潮数据技术有限公司 | 一种数据恢复方法、装置及相关设备 |
CN113806142B (zh) * | 2021-08-30 | 2023-12-22 | 济南浪潮数据技术有限公司 | 一种数据恢复方法、装置及相关设备 |
CN113687930B (zh) * | 2021-08-30 | 2023-06-23 | 厦门市易联众易惠科技有限公司 | 支持自动晋升的任务管理方法、装置、设备及存储介质 |
CN113835861A (zh) * | 2021-09-24 | 2021-12-24 | 中汽创智科技有限公司 | 一种进程调度方法、装置、设备及存储介质 |
CN113835861B (zh) * | 2021-09-24 | 2024-05-24 | 中汽创智科技有限公司 | 一种进程调度方法、装置、设备及存储介质 |
CN115098258B (zh) * | 2022-06-23 | 2022-12-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
CN115098258A (zh) * | 2022-06-23 | 2022-09-23 | 云南大学 | 基于多核堆栈处理器的Forth多任务调度方法及装置 |
CN114880102B (zh) * | 2022-07-04 | 2022-10-25 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN114880102A (zh) * | 2022-07-04 | 2022-08-09 | 北京智芯半导体科技有限公司 | 安全芯片及其多任务调度方法和装置、存储介质 |
CN115658278A (zh) * | 2022-12-07 | 2023-01-31 | 中国电子科技集团公司第三十研究所 | 一种支持高并发协议交互的微任务调度机 |
CN116244050A (zh) * | 2023-02-07 | 2023-06-09 | 四川大学 | 一种基于高响应比的气动特性算例调度方法 |
CN116244050B (zh) * | 2023-02-07 | 2024-01-26 | 四川大学 | 一种基于高响应比的气动特性算例调度方法 |
CN116414464A (zh) * | 2023-05-26 | 2023-07-11 | 摩尔线程智能科技(北京)有限责任公司 | 调度任务的方法和装置、电子设备和计算机可读介质 |
CN116414464B (zh) * | 2023-05-26 | 2023-09-22 | 摩尔线程智能科技(北京)有限责任公司 | 调度任务的方法和装置、电子设备和计算机可读介质 |
CN116932227A (zh) * | 2023-09-14 | 2023-10-24 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
CN116932227B (zh) * | 2023-09-14 | 2023-12-22 | 西安华创马科智能控制系统有限公司 | 一种基于单线程的任务调度方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416546A (zh) | 多任务调度方法、电子装置和计算机存储介质 | |
US10133598B2 (en) | Systems and methods of using a hypervisor to assign virtual processor priority based on task priority and to schedule virtual processors for guest operating systems | |
US20230185607A1 (en) | Hardware accelerated dynamic work creation on a graphics processing unit | |
JP4956418B2 (ja) | コンピュータ装置用のオペレーティング・システムの、またはそれに関する改良 | |
US6360243B1 (en) | Method, device and article of manufacture for implementing a real-time task scheduling accelerator | |
JP2005284749A (ja) | 並列処理コンピュータ | |
EP2284703B1 (en) | Scheduling of tasks in a parallel computer system according to defined policies | |
US20070204271A1 (en) | Method and system for simulating a multi-CPU/multi-core CPU/multi-threaded CPU hardware platform | |
EP2473914A1 (en) | Hardware-based scheduling of gpu work | |
US8321874B2 (en) | Intelligent context migration for user mode scheduling | |
US4725946A (en) | P and V instructions for semaphore architecture in a multiprogramming/multiprocessing environment | |
US9529625B2 (en) | Method and system for providing stack memory management in real-time operating systems | |
Bloom et al. | Scheduling and thread management with RTEMS | |
US20050066149A1 (en) | Method and system for multithreaded processing using errands | |
US7516311B2 (en) | Deterministic microcontroller context arrangement | |
US11301304B2 (en) | Method and apparatus for managing kernel services in multi-core system | |
US20130104141A1 (en) | Divided central data processing, | |
US7562207B2 (en) | Deterministic microcontroller with context manager | |
US9329893B2 (en) | Method for resuming an APD wavefront in which a subset of elements have faulted | |
US8424013B1 (en) | Methods and systems for handling interrupts across software instances and context switching between instances having interrupt service routine registered to handle the interrupt | |
US20150363227A1 (en) | Data processing unit and method for operating a data processing unit | |
Labrosse | Operating systems | |
Rothberg | Interrupt handling in Linux | |
CN116360941A (zh) | 一种面向多核dsp的并行计算资源自组织调度方法及系统 | |
Labrosse | Embedded Operating Systems |
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 |