CN107562527B - 一种rtos上的smp的实时任务调度方法 - Google Patents
一种rtos上的smp的实时任务调度方法 Download PDFInfo
- Publication number
- CN107562527B CN107562527B CN201710750443.6A CN201710750443A CN107562527B CN 107562527 B CN107562527 B CN 107562527B CN 201710750443 A CN201710750443 A CN 201710750443A CN 107562527 B CN107562527 B CN 107562527B
- Authority
- CN
- China
- Prior art keywords
- core
- cpu
- task
- entering
- priority
- 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.)
- Active
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明属于计算机领域,具体涉及一种RTOS上的SMP的实时任务调度算法。一种RTOS上的SMP的实时任务调度算法,包括:S1当实时操作系统中断完全退出或发生可能引发任务就绪或当前任务休眠的系统调用时,如果CPU‑CORE的当前任务休眠,切换当前任务的工作状态,然后进入步骤S2;S2获取需要运行的任务,并进入步骤S3;S3任务调度。本发明公开的一种RTOS上的SMP的实时任务调度算法与“优先级位图”算法相比,使用全局就绪表加CPU‑CORE本地就绪表的办法解决了在SMP上无法达到调度时间为O(1)的硬实时问题,增加了对多核的支持,并使用核间中断通知调度的方法实现了负载均衡的解决方案。
Description
技术领域
本发明属于计算机领域,具体涉及一种RTOS上的SMP的实时任务调度方法。
背景技术
RTOS,即实时操作系统,是指当外界事件或数据产生时,能够接受并以足够快的速度予以处理,其处理的结果又能在规定的时间之内来控制生产过程或对处理系统做出快速响应,并控制所有实时任务协调一致运行的操作系统。提供及时响应和高可靠性是其主要特点。在实时操作系统中必然存在着若干个实时任务,这些任务通常与某些个外部设备相关,能反应或控制相应的外部设备,因而带有某种程度的紧迫性。根据其紧迫性的程度,人为地给这些任务定一个优先级,任务的紧迫性程度越高,则其优先级越高。
实时操作系统需要从所有任务中选择一个处于就绪态的优先级最高的任务出来运行,选择算法就是其调度算法。
为了保证实时性,实时操作系统的调度算法的时间复杂度必须是O(1),即与参与调度的任务数目、CPU负载无关,是一个常数。否则任务调度的时间就不是一个确定的值,就无法保证在一定时间限制内完成特定功能,就无法称之为实时操作系统。
一般的实时操作系统都采用一种称为“优先级位图”的算法来作为其调度算法,这种“优先级位图”算法有一个特点,就是通过时间复杂度为O(1)的位图查找算法查找出优先级位图中标记的最高优先级的就绪态任务。
但在SMP(对称多处理器)的机器上,这种“优先级位图”算法就不能采用了,因为SMP的机器能同时运行多个处于就绪态的任务,实时操作系统的调度算法不仅要选出一组(处理器逻辑核心个数的)高优先级的就绪态任务,还需要处理SMP上的负载均衡等问题。
因此,如何在SMP的机器上实现一种调度时间为O(1)的硬实时负载均衡多核任务调度算法,成为目前亟待解决的问题。
发明内容
本发明的目的是:提供了一种RTOS上SMP的实时任务调度方法,能够实现调度时间为O(1)的硬实时负载均衡多核任务调度。
技术方案:一种RTOS上的SMP的实时任务调度方法,包括:
S1当实时操作系统中断完全退出或发生可能引发任务就绪或当前任务休眠的系统调用时,如果CPU-CORE的当前任务休眠,切换当前任务的工作状态,然后进入步骤S2;
S2获取需要运行的任务,并进入步骤S3;
S3任务调度。
进一步地,步骤S2包括以下步骤:
S201判断CPU-CORE当前任务能否调度,若CPU-CORE当前任务能调度,进入步骤S202,反之,则进入步骤S3;
S202判断CPU-CORE当前任务是否产生优先级卷绕,若CPU-CORE当前任务产生优先级卷绕,进入步骤S203;反之,进入步骤S3;
S203判断CPU-CORE是否有候选任务,若CPU-CORE没有候选任务,进入步骤S204,若CPU-CORE有候选任务,进入步骤S205;
S204更新CPU-CORE候选任务,然后进入步骤S210;
S205判断CPU-CORE本地就绪表和全局就绪表是否为非空,若本地就绪表和全局就绪表为非空表,进入步骤S206,若本地就绪表和全局就绪表为空表,进入步骤S210;
S206判断CPU-CORE候选任务是否拥有时间片,若CPU-CORE候选任务拥有时间片,进入步骤S207,反之,进入步骤S208;
S207判断CPU-CORE候选任务的优先级是否小于本地就绪表和全局就绪表中最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于本地就绪表和全局就绪表中最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S208判断CPU-CORE候选任务的优先级是否小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S209重新选择CPU-CORE候选任务,并进入步骤S210;
S210消除CPU-CORE当前任务的优先级卷绕标志。
进一步地,步骤S3包括以下步骤:
S31判断CPU-CORE候选任务是否是CPU-CORE当前任务,若CPU-CORE候选任务不是CPU-CORE当前任务,进入步骤S32,反之,进入步骤S33;
S32保存CPU-CORE当前任务的CPU-CORE寄存器上下文信息到当前任务的栈空间,然后执行一次SMP调度通知,最后从CPU-CORE候选任务的栈空间中加载的上下文信息到CPU-CORE寄存器,然后进入步骤S34;
S33执行一次SMP调度通知,进入步骤S34;
S34任务调度完成。
更进一步地,步骤S32或者步骤S33中的SMP调度通知包括以下三种策略:
快速调度策略:
当前CPU-CORE给其它所有的标记为产生优先级卷绕的CPU-CORE发送任务调度的核间中断;
普通策略:
当前CPU-CORE给当前任务优先级最低的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断;
同步多线程均衡策略:
当前CPU-CORE给物理CPU处于空闲状态的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断,如果不存在一个满足条件的CPU-CORE,则按普通策略处理。
进一步地,全局就绪表只有一个,保留CPU-CORE本地就绪表的个数与CPU的逻辑核心个数相同。
有益效果:本发明公开的一种RTOS上的SMP的实时任务调度方法具有以下有益效果:
本发明公开的一种RTOS上的SMP的实时任务调度方法与“优先级位图”算法相比,使用全局就绪表加CPU-CORE本地就绪表的办法解决了在SMP上无法达到调度时间为O(1)的硬实时问题,增加了对多核的支持,并使用核间中断通知调度的方法实现了负载均衡的解决方案。
附图说明
图1为本发明公开的一种RTOS上的SMP的实时任务调度方法的流程图。
具体实施方式:
下面对本发明的具体实施方式详细说明。
如图1所示,一种RTOS上的SMP的实时任务调度方法,包括:
S1当实时操作系统中断完全退出或发生可能引发任务就绪或当前任务休眠的系统调用时,如果CPU-CORE的当前任务休眠,切换当前任务的工作状态,然后进入步骤S2;
S2获取需要运行的任务,并进入步骤S3;
S3任务调度。
进一步地,步骤S2包括以下步骤:
S201判断CPU-CORE当前任务能否调度,若CPU-CORE当前任务能调度,进入步骤S202,反之,则进入步骤S3;
S202判断CPU-CORE当前任务是否产生优先级卷绕,若CPU-CORE当前任务产生优先级卷绕,进入步骤S203;反之,进入步骤S3;
S203判断CPU-CORE是否有候选任务,若CPU-CORE没有候选任务,进入步骤S204,若CPU-CORE有候选任务,进入步骤S205;
S204更新CPU-CORE候选任务,然后进入步骤S210;
S205判断CPU-CORE本地就绪表和全局就绪表是否为非空,若本地就绪表和全局就绪表为非空表,进入步骤S206,若本地就绪表和全局就绪表为空表,进入步骤S210;
S206判断CPU-CORE候选任务是否拥有时间片,若CPU-CORE候选任务拥有时间片,进入步骤S207,反之,进入步骤S208;
S207判断CPU-CORE候选任务的优先级是否小于本地就绪表和全局就绪表中最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于本地就绪表和全局就绪表中最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S208判断CPU-CORE候选任务的优先级是否小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S209重新选择CPU-CORE候选任务,并进入步骤S210;
S210消除CPU-CORE当前任务的优先级卷绕标志。
进一步地,步骤S3包括以下步骤:
S31判断CPU-CORE候选任务是否是CPU-CORE当前任务,若CPU-CORE候选任务不是CPU-CORE当前任务,进入步骤S32,反之,进入步骤S33;
S32保存CPU-CORE当前任务的CPU-CORE寄存器上下文信息到当前任务的栈空间,然后执行一次SMP调度通知,最后从CPU-CORE候选任务的栈空间中加载的上下文信息到CPU-CORE寄存器,然后进入步骤S34;
S33执行一次SMP调度通知,进入步骤S34;
S34任务调度完成。
更进一步地,步骤S32或者步骤S33中的SMP调度通知包括以下三种策略:
快速调度策略:
当前CPU-CORE给其它所有的标记为产生优先级卷绕的CPU-CORE发送任务调度的核间中断;
普通策略:
当前CPU-CORE给当前任务优先级最低的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断;
同步多线程均衡策略:
当前CPU-CORE给物理CPU处于空闲状态的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断,如果不存在一个满足条件的CPU-CORE,则按普通策略处理。
进一步地,全局就绪表只有一个,保留CPU-CORE本地就绪表的个数与CPU的逻辑核心个数相同。
上面对本发明的实施方式做了详细说明。但是本发明并不限于上述实施方式,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下做出各种变化。
Claims (3)
1.一种RTOS上的SMP的实时任务调度方法,其特征在于,包括:
S1当实时操作系统中断完全退出或发生可能引发任务就绪或当前任务休眠的系统调用时,如果CPU-CORE的当前任务休眠,切换当前任务的工作状态,然后进入步骤S2;
S2获取需要运行的任务,并进入步骤S3,包括:
S201判断CPU-CORE当前任务能否调度,若CPU-CORE当前任务能调度,进入步骤S202,反之,则进入步骤S3;
S202判断CPU-CORE当前任务是否产生优先级卷绕,若CPU-CORE当前任务产生优先级卷绕,进入步骤S203;反之,进入步骤S3;
S203判断CPU-CORE是否有候选任务,若CPU-CORE没有候选任务,进入步骤S204,若CPU-CORE有候选任务,进入步骤S205;
S204更新CPU-CORE候选任务,然后进入步骤S210;
S205判断CPU-CORE本地就绪表和全局就绪表是否为非空,若本地就绪表和全局就绪表为非空表,进入步骤S206,若本地就绪表和全局就绪表为空表,进入步骤S210;
S206判断CPU-CORE候选任务是否拥有时间片,若CPU-CORE候选任务拥有时间片,进入步骤S207,反之,进入步骤S208;
S207判断CPU-CORE候选任务的优先级是否小于本地就绪表和全局就绪表中最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于本地就绪表和全局就绪表中最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S208判断CPU-CORE候选任务的优先级是否小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,若CPU-CORE候选任务的优先级小于或等于本地就绪表和全局就绪表中的最高优先级任务的优先级,进入步骤S209,反之,进入步骤S210;
S209重新选择CPU-CORE候选任务,并进入步骤S210;
S210消除CPU-CORE当前任务的优先级卷绕标志;
S3任务调度,包括:
S31判断CPU-CORE候选任务是否是CPU-CORE当前任务,若CPU-CORE候选任务不是CPU-CORE当前任务,进入步骤S32,反之,进入步骤S33;
S32保存CPU-CORE当前任务的CPU-CORE寄存器上下文信息到当前任务的栈空间,然后执行一次SMP调度通知,最后从CPU-CORE候选任务的栈空间中加载的上下文信息到CPU-CORE寄存器,然后进入步骤S34;
S33执行一次SMP调度通知,进入步骤S34;
S34任务调度完成。
2.根据权利要求1所述的一种RTOS上的SMP的实时任务调度方法,其特征在于,步骤S32或者步骤S33中的SMP调度通知包括以下三种策略:
快速调度策略:
当前CPU-CORE给其它所有的标记为产生优先级卷绕的CPU-CORE发送任务调度的核间中断;
普通策略:
当前CPU-CORE给当前任务优先级最低的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断;
同步多线程均衡策略:
当前CPU-CORE给物理CPU处于空闲状态的并且标记为产生优先级卷绕的一个CPU-CORE发送任务调度的核间中断,如果不存在一个满足条件的CPU-CORE,则按普通策略处理。
3.根据权利要求1所述的一种RTOS上的SMP的实时任务调度方法,其特征在于,全局就绪表只有一个,保留CPU-CORE本地就绪表的个数与CPU的逻辑核心个数相同。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710750443.6A CN107562527B (zh) | 2017-08-28 | 2017-08-28 | 一种rtos上的smp的实时任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710750443.6A CN107562527B (zh) | 2017-08-28 | 2017-08-28 | 一种rtos上的smp的实时任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107562527A CN107562527A (zh) | 2018-01-09 |
CN107562527B true CN107562527B (zh) | 2020-12-18 |
Family
ID=60977195
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710750443.6A Active CN107562527B (zh) | 2017-08-28 | 2017-08-28 | 一种rtos上的smp的实时任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107562527B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109240813B (zh) * | 2018-08-21 | 2021-12-24 | 广东工业大学 | 一种移动云计算中的任务调度与任务迁移方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101446910A (zh) * | 2008-12-08 | 2009-06-03 | 哈尔滨工程大学 | 基于smp的aedf任务调度方法 |
US7810093B2 (en) * | 2003-11-14 | 2010-10-05 | Lawrence Livermore National Security, Llc | Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes |
CN103729480A (zh) * | 2014-01-29 | 2014-04-16 | 重庆邮电大学 | 一种多核实时操作系统多个就绪任务快速查找及调度方法 |
-
2017
- 2017-08-28 CN CN201710750443.6A patent/CN107562527B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7810093B2 (en) * | 2003-11-14 | 2010-10-05 | Lawrence Livermore National Security, Llc | Parallel-aware, dedicated job co-scheduling within/across symmetric multiprocessing nodes |
CN101446910A (zh) * | 2008-12-08 | 2009-06-03 | 哈尔滨工程大学 | 基于smp的aedf任务调度方法 |
CN103729480A (zh) * | 2014-01-29 | 2014-04-16 | 重庆邮电大学 | 一种多核实时操作系统多个就绪任务快速查找及调度方法 |
Non-Patent Citations (4)
Title |
---|
"SMP硬实时调度算法";创世之枪;《CSDN》;20170425;第1-3页 * |
"SylixOS线程调度浅析";WY_Studying;《CSDN》;20170214;第1-4页 * |
"支持对称多处理器结构的操作系统设计";任晓瑞等;《航空计算技术》;20080315;第38卷(第2期);第2.2.3节 * |
创世之枪."SMP硬实时调度算法".《CSDN》.2017, * |
Also Published As
Publication number | Publication date |
---|---|
CN107562527A (zh) | 2018-01-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113535367B (zh) | 任务调度方法及相关装置 | |
US9858115B2 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core processor system and related non-transitory computer readable medium | |
US8904399B2 (en) | System and method of executing threads at a processor | |
US20150121387A1 (en) | Task scheduling method for dispatching tasks based on computing power of different processor cores in heterogeneous multi-core system and related non-transitory computer readable medium | |
US10467054B2 (en) | Resource management method and system, and computer storage medium | |
CN104536827A (zh) | 一种数据调度方法和装置 | |
CN110162344B (zh) | 一种隔离限流的方法、装置、计算机设备及可读存储介质 | |
CN108415778A (zh) | 任务排序方法、装置及调度系统 | |
US20180260243A1 (en) | Method for scheduling entity in multicore processor system | |
CN111176806A (zh) | 一种业务处理方法、装置及计算机可读存储介质 | |
US9904582B2 (en) | Method and apparatus for executing software in electronic device | |
CN107562527B (zh) | 一种rtos上的smp的实时任务调度方法 | |
CN113986497A (zh) | 基于多租户技术的队列调度方法、装置及系统 | |
CN114490048A (zh) | 任务执行方法、装置、电子设备及计算机存储介质 | |
CN113032119A (zh) | 一种任务调度方法、装置、存储介质及电子设备 | |
EP4386554A1 (en) | Instruction distribution method and device for multithreaded processor, and storage medium | |
CN112486638A (zh) | 用于执行处理任务的方法、装置、设备和存储介质 | |
CN113220429B (zh) | Java线程池的任务处理方法、装置、设备和介质 | |
CN116795503A (zh) | 任务调度方法、任务调度装置、图形处理器及电子设备 | |
JP2012093832A (ja) | 情報処理装置 | |
EP3591518A1 (en) | Processor and instruction scheduling method | |
CN113032154B (zh) | 一种虚拟cpu的调度方法、装置、电子设备及存储介质 | |
CN115659443B (zh) | 几何形状流数据处理方法和装置、计算设备和存储介质 | |
US20240143394A1 (en) | Heterogeneous computing terminal for task scheduling | |
CN111985765B (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 |