CN107391248B - 用于stm32系统的多级反馈队列调度方法 - Google Patents
用于stm32系统的多级反馈队列调度方法 Download PDFInfo
- Publication number
- CN107391248B CN107391248B CN201710627434.8A CN201710627434A CN107391248B CN 107391248 B CN107391248 B CN 107391248B CN 201710627434 A CN201710627434 A CN 201710627434A CN 107391248 B CN107391248 B CN 107391248B
- Authority
- CN
- China
- Prior art keywords
- task
- processor cores
- serial number
- frequency
- resource
- 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
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
- G06F9/5038—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 considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- 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/48—Indexing scheme relating to G06F9/48
- G06F2209/484—Precedence
-
- 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)
- Multi Processors (AREA)
Abstract
本发明提供了一种用于STM32系统的多级反馈队列调度方法,包括以下步骤:S1、定义数据结构:S11、建立工作频率序列;S12、建立任务执行时间矩阵;S13、建立剩余资源矩阵。S2、调度方法:S21、当多个任务需要处理时,首先处理优先级高的优先级内任务;当某一优先级内有多个任务时首先处理含指令较多的任务;每当RTC中断到来时、任务完成时或者任务产生时对当前需处理的任务进行调度处理,对当前需处理的任务调度处理具体如下:S211、对各个处理器内核对应的数据结构进行预处理;S212、判断有无空闲处理器内核。该用于STM32系统的多级反馈队列调度方法解决现有技术中无空闲处理器内核的情况下无法合理调配运行中处理器内核而导致一些处理器内核极易损坏的问题。
Description
技术领域
本发明涉及STM32系统,具体涉及一种用于STM32系统的多级反馈队列调度方法。
背景技术
多级(假设为N级)反馈队列调度算法可以如下原理:
1、设有N个队列(Q1,Q2....QN),其中各个队列对于处理机的优先级是不一样的,也就是说位于各个队列中的作业(进程)的优先级也是不一样的。一般来说,优先级Priority(Q1)>Priority(Q2)>...>Priority(QN)。怎么讲,位于Q1中的任何一个作业(进程)都要比Q2中的任何一个作业(进程)相对于CPU的优先级要高(也就是说,Q1中的作业一定要比Q2中的作业先被处理机调度),依次类推其它的队列。
2、对于某个特定的队列来说,里面是遵循时间片轮转法。也就是说,位于队列Q2中有N个作业,它们的运行时间是通过Q2这个队列所设定的时间片来确定的(为了便于理解,我们也可以认为特定队列中的作业的优先级是按照FCFS来调度的)。
3、各个队列的时间片是一样的吗?不一样,这就是该算法设计的精妙之处。各个队列的时间片是随着优先级的增加而减少的,也就是说,优先级越高的队列中它的时间片就越短。同时,为了便于那些超大作业的完成,最后一个队列QN(优先级最低的队列)的时间片一般很大(不需要考虑这个问题)。
多级反馈队列调度算法描述:
1、进程在进入待调度的队列等待时,首先进入优先级最高的Q1等待。
2、首先调度优先级高的队列中的进程。若高优先级中队列中已没有调度的进程,则调度次优先级队列中的进程。例如:Q1,Q2,Q3三个队列,只有在Q1中没有进程等待时才去调度Q2,同理,只有Q1,Q2都为空时才会去调度Q3。
3、对于同一个队列中的各个进程,按照时间片轮转法调度。比如Q1队列的时间片为N,那么Q1中的作业在经历了N个时间片后若还没有完成,则进入Q2队列等待,若Q2的时间片用完后作业还不能完成,一直进入下一级队列,直至完成。
4、在低优先级的队列中的进程在运行时,又有新到达的作业,那么在运行完这个时间片后,CPU马上分配给新到达的作业(抢占式)。
假设系统中有3个反馈队列Q1,Q2,Q3,时间片分别为2,4,8。现在有3个作业J1、J2、J3分别在时间0、1、3时刻到达。而它们所需要的CPU时间分别是3、2、1个时间片。上述算法运作步骤如下:
1、时刻0:J1到达。于是进入到队列1,运行1个时间片,时间片还未到,此时J2到达;
2、时刻1:J2到达,由于时间片仍然由J1掌控,于是等待;J1在运行了1个时间片后,已经完成了在Q1中的;2个时间片的限制,于是J1置于Q2等待被调度;现在处理机分配给J2;
3、时刻2:J1进入Q2等待调度,J2获得CPU开始运行;
4、时刻3:J3到达,由于J2的时间片未到,故J3在Q1等待调度,J1也在Q2等待调度;
5、时刻4:J2处理完成,由于J3,J1都在等待调度,但是J3所在的队列比J1所在的队列的优先级要高,于是J3被调度,J1继续在Q2等待;
6、时刻5:J3经过1个时间片,完成;
7、时刻6:由于Q1已经空闲,于是开始调度Q2中的作业,则J1得到处理器开始运行;J1再经过一个时间片,完成了任务;于是整个调度过程结束。
虽然上述方法实现了各个任务的调度,实现了根据优先级别对各个任务进行处理。但是仍然存在的缺点为:
1)对于空闲处理器内核没有将刚处理完任务的空闲处理器内核和长时间未处理任务的空闲处理器内核进行区别对待,使得有些空闲处理器内核长时间空闲,而有些空前处理器内核不间断地运行,导致不间断地运行的空前处理器内核容易因超负荷运行而损坏;
2)对于无空闲处理器内核的情况,任务的是随机分配给各个运行中处理器内核的,对于已经超负荷运行的处理器内核来说负担相当重,当RTC中断到来时、任务完成时或者任务产生时其需要根据任务的优先级别依次地对各个任务一次处理,而使得有些负荷并不是很大的运行处理器内核处理当前正在处理的任务后闲置,极有可能出现闲置时间较长的情况,因此不能合理调配各个运行的处理器内核,会出现某一运行的处理器内核损坏的情况。
发明内容
本发明提供了一种用于STM32系统的多级反馈队列调度方法,解决现有技术中无空闲处理器内核的情况下无法合理调配运行中处理器内核而导致一些处理器内核极易损坏的问题。
为实现上述目的,本发明采用了如下的技术方案:
一种用于STM32系统的多级反馈队列调度方法,包括以下步骤:
S1、定义数据结构:
S11、建立工作频率序列(j,fj),j为频率序号,fj表示频率序号j的工作频率值,1≤j≤m且j为整数,频率序号j越大对应的工作频率值fj越大;
S12、建立任务执行时间矩阵Amount[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;命令Amount[i,j]=kij,其表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量为kij;
S13、建立剩余资源矩阵Resource[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;初始命令Resource[i1,j1]=maxcmdnum-Amount[i1,j1]=Δkij,式中,Amount[i,j]表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量;maxcmdnumi处理器内核i在最大工作频率值fm下设定时间内能够执行的平均指令数量;
S2、调度方法:
S21、当多个任务需要处理时,首先处理优先级高的优先级内任务,多级反馈队列设有r个优先级,所有优先级按优先级高低排序后依次为Task[1]、…、Task[x]、Task[x+1]、…以及Task[r],处理时就是先处理属于Task[1]优先级的任务;当某一优先级内有多个任务时首先处理含指令较多的任务,设某一优先级中有t个任务,所述优先级中t个任务按照指令多少排序后为TP[1]、…、TP[y]、TP[y+1]、…以及TP[t],那么处理所述优先级内任务时就是首先处理TP[1]任务;每当RTC中断到来时、任务完成时或者任务产生时对当前需处理的任务进行调度处理,设当前需处理的任务为TP[y],对当前需处理的任务TP[y]的调度处理具体如下:
S211、对各个处理器内核对应的数据结构进行预处理,具体包括以下步骤:
S211a、判断每一处理器内核是否正在运行,若否,则进行步骤S211b,且同时计算Resource[i1,j1]=maxcmdnumi1,式中,i1为当前判断为运行处理器内核的器序号,j1为i1处理器内核的上一次工作频率,maxcmdnumi1为i1处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量;若是,则进行步骤S211c,且同时计算Resource[i2,j2]=maxcmdnumi2-Amount[i2,j2],式中,i2为当前判断为运行处理器内核的器序号,j2为i2处理器内核的当前工作频率,maxcmdnumi2为i2处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量;
S212、判断有无空闲处理器内核,若有,则将前需处理的任务为TP[y]分配给一空闲处理器内核处理;若无,则进行步骤S213;
S213、无空闲处理器内核处理步骤具体如下:
S213a、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max2;
S213b、所有非空闲状态处理器内核中,从器编号i由小到大,Resource[i,j]第一个等于Max2处理器内核为第二指定处理器内核iz2,将当前需处理的任务TP[y]分配给第二指定处理器内核iz2处理;
S213c、通过公式Resource[iz2,jz2]=Amount[iz2,m]-Resource[iz2,jz2]-NTP[y]计算得到第二指定频率序号jz2,式中NTP[y]为当前需处理任务TP[y]的指令数量,第二指定频率序号jz2为第二指定处理器内核iz2处理当前需处理的任务TP[y]时的工作频率。
优选的是,S212中,将前需处理的任务为TP[y]分配给一空闲处理器内核处理具体包括以下步骤:
S212a、令Sum=0;
S212b、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max1;
S212c、计算Sum=Max1+NTP[y],式中NTP[y]为当前需处理任务TP[y]的指令数量;
S212d、在空闲处理器中,从器序号i值小到大,依次将每一空闲处理器内核的Amount[i,m]分别与Sum比较,以判断当前比较的空闲处理器内核的Amount[i,m]是否不小于Sum,比较过程中第一个满足条件的Amount[i,m]不小于Sum的空闲处理器内核为第一指定处理器内核iz1,将当前需处理的任务TP[y]分配给第一指定处理器内核iz1处理;
S212e、通过公式Resource[iz1,jz1]=Amount[iz1,m]-Sum计算得到第一指定频率序号jz1,第一指定频率序号jz1为第一指定处理器内核iz1处理当前需处理的任务TP[y]时的工作频率。
优选的是,进行步骤S211a后,需再进行步骤S211b,步骤S211b具体为:
判断未运行的处理器内核是否任务刚完成,若否,则仅将所述处理器内核设置为空闲状态。
优选的是,进行步骤S211a后,需再进行步骤S211c,步骤S211c具体为:
判断运行的处理器内核的运行时间是否超过阈值,若是,则将所述处理器内核频率降为为最低工作频率f1,并设置为空闲状态。
相比于现有技术,本发明具有如下有益效果:
步骤S213a中通过寻找非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,Resource[i2,j2]表示各个非空闲状态处理器内核还能最多处理的平均指令数量,进而找到了Max2;步骤S213b找到了还能Max2这么多平均指令数量对应的处理器内核,就实现了将处理能力较强的无空闲处理器内核调用出来处理,解决现有技术中无空闲处理器内核的情况下无法合理调配运行中处理器内核而导致一些处理器内核极易损坏的问题,避免长期不调用空余处理能力较差的无空闲处理器内核而导致无空闲处理器内核损坏,使得资源充分综合利用;步骤S213c,计算得到由于无空闲处理器内核的Resource[i,j]本来就较小,因此需要完全满足Resource[iz2,jz2]=Amount[iz2,m]-NTP[y]这一条件的处理器内核就几乎没有,有也是需要该处理器内核在最大频率序号下工作才能实现,不能使得该处理器内核工作在较小频率序号下,不利于处理器内核的长期使用,因此使得非空闲处理器内核在较小频率,有利于处理器内核的长期使用,Amount[iz2,m]同理步骤S212e。
具体实施方式
本实施例提出了一种用于STM32系统的多级反馈队列调度方法,包括以下步骤:
S1、定义数据结构:
S11、建立工作频率序列(j,fj),j为频率序号,fj表示频率序号j的工作频率值,1≤j≤m且j为整数,频率序号j越大对应的工作频率值fj越大;
S12、建立任务执行时间矩阵Amount[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;命令Amount[i,j]=kij,其表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量为kij;
S13、建立剩余资源矩阵Resource[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;初始命令Resource[i1,j1]=maxcmdnum-Amount[i1,j1]=Δkij,式中,Amount[i,j]表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量;maxcmdnumi处理器内核i在最大工作频率值fm下设定时间内能够执行的平均指令数量;
S2、调度方法:
S21、当多个任务需要处理时,首先处理优先级高的优先级内任务,多级反馈队列设有r个优先级,所有优先级按优先级高低排序后依次为Task[1]、…、Task[x]、Task[x+1]、…以及Task[r],处理时就是先处理属于Task[1]优先级的任务;当某一优先级内有多个任务时首先处理含指令较多的任务,设某一优先级中有t个任务,所述优先级中t个任务按照指令多少排序后为TP[1]、…、TP[y]、TP[y+1]、…以及TP[t],那么处理所述优先级内任务时就是首先处理TP[1]任务;每当RTC中断到来时、任务完成时或者任务产生时对当前需处理的任务进行调度处理,设当前需处理的任务为TP[y],对当前需处理的任务TP[y]的调度处理具体如下:
S211、对各个处理器内核对应的数据结构进行预处理,具体包括以下步骤:
S211a、判断每一处理器内核是否正在运行,若否,则进行步骤S211b,且同时计算Resource[i1,j1]=maxcmdnumi1,式中,i1为当前判断为运行处理器内核的器序号,j1为i1处理器内核的上一次工作频率,maxcmdnumi1为i1处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量;若是,则进行步骤S211c,且同时计算Resource[i2,j2]=maxcmdnumi2-Amount[i2,j2],式中,i2为当前判断为运行处理器内核的器序号,j2为i2处理器内核的当前工作频率,maxcmdnumi2为i2处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量(其中,所有处理器内核初始状态时均在最小频率序号下工作);
S212、判断有无空闲处理器内核,若有,则将前需处理的任务为TP[y]分配给一空闲处理器内核处理;若无,则进行步骤S213;
S213、无空闲处理器内核处理步骤具体如下:S213a、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max2;S213b、所有非空闲状态处理器内核中,从器编号i由小到大,Resource[i,j]第一个等于Max2处理器内核为第二指定处理器内核iz2,将当前需处理的任务TP[y]分配给第二指定处理器内核iz2处理;S213c、通过公式Resource[iz2,jz2]=Amount[iz2,m]-Resource[iz2,jz2]-NTP[y]计算得到第二指定频率序号jz2,式中NTP[y]为当前需处理任务TP[y]的指令数量,第二指定频率序号jz2为第二指定处理器内核iz2处理当前需处理的任务TP[y]时的工作频率。
为了实现各个空闲处理器内核在尽量小功率序号下工作,避免空闲处理器内核使用时间较长,延长各个空闲处理器内核,做了如下设计:步骤S212中,将前需处理的任务为TP[y]分配给一空闲处理器内核处理具体包括以下步骤:S212a、令Sum=0;S212b、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max1;S212c、计算Sum=Max1+NTP[y],式中NTP[y]为当前需处理任务TP[y]的指令数量;S212d、在空闲处理器中,从器序号i值小到大,依次将每一空闲处理器内核的Amount[i,m]分别与Sum比较,以判断当前比较的空闲处理器内核的Amount[i,m]是否不小于Sum,比较过程中第一个满足条件的Amount[i,m]不小于Sum的空闲处理器内核为第一指定处理器内核iz1,将当前需处理的任务TP[y]分配给第一指定处理器内核iz1处理,此步骤中当然是Sum越大,找到的空闲处理器内核最多能够处理的指令数量Amount[i,m]也就越大,那么该空闲处理器内核的处理功能就越强,能够把处理能力较强的空闲处理器内核利用起来,使得各个资源不会浪费,也避免处理能力小的空闲处理器内核长期工作而损坏,延长各个处理器内核的使用寿命,处理器内核处理能力越强,其需要的工作频率值也就越小,越不会出现超负荷的情况;S212e、通过公式Resource[iz1,jz1]=Amount[iz1,m]-Sum计算得到第一指定频率序号jz1,第一指定频率序号jz1为第一指定处理器内核iz1处理当前需处理的任务TP[y]时的工作频率,此步骤中,为了使得Resource[iz1,jz1]计算的值越大,那么Amount[iz1,m]也应该取较大的,故直接取j=m,这样较大Resource[iz1,jz1]对应的第一指定处理器内核iz1在第一指定频率序号jz1下能够处理的该任务,且尽量工作在较小工作频率下,延长了处理器的使用寿命。
步骤S212e中计算方法如下:首先,根据步骤S212e中公式:Resource[iz1,jz1]=Amount[iz1,m]-Sum得到Resource[iz1,jz1]值,式中,maxcmdnumiz1为第一指定处理器内核iz1在最大工作频率值fm下设定时间内能够执行的平均指令数量,Amount[iz1,m]为第一指定处理器内核iz1在频率序号m对应的工作频率值下设定时间内能够执行的平均指令数量;然后在剩余资源矩阵Resource[i,j]寻找对应Resource[iz1,jz1]所在位置,就能知道功率序号jz1的确切值,由于在步骤S211a的进行,使得所有空闲处理器内核的上一次工作频率序号j1下对应的Resource[i1,j1]=maxcmdnumi1,对于同一个处理器内核来说maxcmdnumi1实质等于Amount[ii1,m],那么在寻找jz1时就不可能会等于上一次工作频率序号j1,因此避免了空闲处理器仍然在上一次频率序号j1下的工作,使得空闲处理器内核不会长期在同一频率序号下工作,特别是避免出现某一处理器内核长期在最大频率序号下工作而损坏,使得资源能够综合利用。再加上,无空闲处理器内核情况下(步骤S213a至S213c),调用的是Resource[i,j]值最大的运行处理器内核来使用,那么运行处理器内核本来就处理能力较强,即使工作时间超过阈值其Resource[i,j]值最大的几率也非常大,因此其被再次调用的几率非常大。
为了降低调度时使得该任务刚完成的空闲处理器内核能够马上利用起来,避免还未来得及更改任务刚完成的空闲处理器的工作状态而导致一段时间内任务刚完成的空闲处理器闲置,使得空闲处理器内核能够被充分利用起来,故对调度前预处理增加了步骤,具体如下:进行步骤S211a后,需再进行步骤S211b,步骤S211b具体为:判断未运行的处理器内核是否任务刚完成,若否,则仅将所述处理器内核设置为空闲状态;若是,则不做任何处理,其已经自动更改为空闲状态。
为了避免调度时再次使用上运行时间超过阈值的正在运行处理器内核,故对调度前预处理增加了步骤,具体如下:进行步骤S211a后,需再进行步骤S211c,步骤S211c具体为:判断运行的处理器内核的运行时间是否超过阈值(阈值等于RTC中断时间间隔),若是,则将所述处理器内核频率降为为最低工作频率f1,并设置为空闲状态;若否,则不做任何处理,使得该正在运行的处理器内核保持原有的工作状态。由于预先设置了该超阈值正在运行处理器内核的Resource[i,j],因此该超阈值正在运行处理器内核Resource[i2,j2]=maxcmdnumi2-Amount[i2,j2],所以该超阈值正在运行处理器内核的Resource[i,j]就很小,比其他空闲内核都小的概率较大,那么在步骤S212e中Resource[iz1,jz1]该值比较大,因此找到该超阈值正在运行处理器内核的Resource[i,j]非常小,避免了超阈值正在运行处理器内核长期处理任务而损坏,进一步合理地调用了资源。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (4)
1.一种用于STM32系统的多级反馈队列调度方法,其特征在于,包括以下步骤:
S1、定义数据结构:
S11、建立工作频率序列(j,fj),j为频率序号,fj表示频率序号j的工作频率值,1≤j≤m且j为整数,频率序号j越大对应的工作频率值fj越大;
S12、建立任务执行时间矩阵Amount[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;命令Amount[i,j]=kij,其表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量为kij;
S13、建立剩余资源矩阵Resource[i,j],其中,i表示器序号为i的处理器内核,1≤i≤n且i为整数;初始命令Resource[i1,j1]=maxcmdnum-Amount[i1,j1]=Δkij,式中,Amount[i,j]表示i处理器内核在频率序号j下设定时间内能够执行的平均指令数量;maxcmdnumi处理器内核i在最大工作频率值fm下设定时间内能够执行的平均指令数量;
S2、调度方法:
S21、当多个任务需要处理时,首先处理优先级高的优先级内任务,多级反馈队列设有r个优先级,所有优先级按优先级高低排序后依次为Task[1]、…、Task[x]、Task[x+1]、…以及Task[r],处理时就是先处理属于Task[1]优先级的任务;当某一优先级内有多个任务时首先处理含指令较多的任务,设某一优先级中有t个任务,所述优先级中t个任务按照指令多少排序后为TP[1]、…、TP[y]、TP[y+1]、…以及TP[t],那么处理所述优先级内任务时就是首先处理TP[1]任务;每当RTC中断到来时、任务完成时或者任务产生时对当前需处理的任务进行调度处理,设当前需处理的任务为TP[y],对当前需处理的任务TP[y]的调度处理具体如下:
S211、对各个处理器内核对应的数据结构进行预处理,具体包括以下步骤:
S211a、判断每一处理器内核是否正在运行,若否,则进行步骤S211b,且同时计算Resource[i1,j1]=maxcmdnumi1,式中,i1为当前判断为运行处理器内核的器序号,j1为i1处理器内核的上一次工作频率,maxcmdnumi1为i1处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量;若是,则进行步骤S211c,且同时计算Resource[i2,j2]=maxcmdnumi2-Amount[i2,j2],式中,i2为当前判断为运行处理器内核的器序号,j2为i2处理器内核的当前工作频率,maxcmdnumi2为i2处理器内核在设定时间内在最大频率值fm下能够执行的平均指令数量;
S212、判断有无空闲处理器内核,若有,则将前需处理的任务为TP[y]分配给一空闲处理器内核处理;若无,则进行步骤S213;
S213、无空闲处理器内核处理步骤具体如下:
S213a、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max2;
S213b、所有非空闲状态处理器内核中,从器编号i由小到大,Resource[i,j]第一个等于Max2处理器内核为第二指定处理器内核iz2,将当前需处理的任务TP[y]分配给第二指定处理器内核iz2处理;
S213c、通过公式Resource[iz2,jz2]=Amount[iz2,m]-Resource[iz2,jz2]-NTP[y]计算得到第二指定频率序号jz2,式中NTP[y]为当前需处理任务TP[y]的指令数量,第二指定频率序号jz2为第二指定处理器内核iz2处理当前需处理的任务TP[y]时的工作频率。
2.根据权利要求1所述的用于STM32系统的多级反馈队列调度方法,其特征在于,S212中,将前需处理的任务为TP[y]分配给一空闲处理器内核处理具体包括以下步骤:
S212a、令Sum=0;
S212b、寻找所有非空闲状态处理器内核中Resource[i2,j2]最大的处理器内核,式中,i2为当前判断为运行处理器内核,j2为i2处理器内核的当前工作在的频率序号,Resource[i2,j2]为i2处理器内核在当前频率序号下工作的最大能完成的平均指令数量,设Resource[i2,j2]最大值为Max1;
S212c、计算Sum=Max1+NTP[y],式中NTP[y]为当前需处理任务TP[y]的指令数量;
S212d、在空闲处理器中,从器序号i值小到大,依次将每一空闲处理器内核的Amount[i,m]分别与Sum比较,以判断当前比较的空闲处理器内核的Amount[i,m]是否不小于Sum,比较过程中第一个满足条件的Amount[i,m]不小于Sum的空闲处理器内核为第一指定处理器内核iz1,将当前需处理的任务TP[y]分配给第一指定处理器内核iz1处理;
S212e、通过公式Resource[iz1,jz1]=Amount[iz1,m]-Sum计算得到第一指定频率序号jz1,第一指定频率序号jz1为第一指定处理器内核iz1处理当前需处理的任务TP[y]时的工作频率。
3.根据权利要求2所述的用于STM32系统的多级反馈队列调度方法,其特征在于,进行步骤S211a后,需再进行步骤S211b,步骤S211b具体为:
判断未运行的处理器内核是否任务刚完成,若否,则仅将所述处理器内核设置为空闲状态。
4.根据权利要求1至3任一所述的用于STM32系统的多级反馈队列调度方法,其特征在于,进行步骤S211a后,需再进行步骤S211c,步骤S211c具体为:
判断运行的处理器内核的运行时间是否超过阈值,若是,则将所述处理器内核频率降为为最低工作频率f1,并设置为空闲状态。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710627434.8A CN107391248B (zh) | 2017-07-28 | 2017-07-28 | 用于stm32系统的多级反馈队列调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710627434.8A CN107391248B (zh) | 2017-07-28 | 2017-07-28 | 用于stm32系统的多级反馈队列调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391248A CN107391248A (zh) | 2017-11-24 |
CN107391248B true CN107391248B (zh) | 2019-10-25 |
Family
ID=60342018
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710627434.8A Active CN107391248B (zh) | 2017-07-28 | 2017-07-28 | 用于stm32系统的多级反馈队列调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391248B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108492390B (zh) * | 2018-01-30 | 2020-12-01 | 青岛中兴智能交通有限公司 | 一种并发处理收费数据的方法和装置 |
CN108958914A (zh) * | 2018-06-16 | 2018-12-07 | 温州职业技术学院 | 一种基于时间监测的动态多级反馈队列进程调度方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276890A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中改变线程优先级的方法和装置 |
CN101710292A (zh) * | 2009-12-21 | 2010-05-19 | 中国人民解放军信息工程大学 | 一种可重构任务处理系统、调度器及任务调度方法 |
CN103970603A (zh) * | 2014-05-21 | 2014-08-06 | 哈尔滨工程大学 | 一种基于多级反馈队列的事件注入引擎的任务调度方法 |
CN104794000A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种作业调度方法及系统 |
-
2017
- 2017-07-28 CN CN201710627434.8A patent/CN107391248B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1276890A (zh) * | 1997-10-23 | 2000-12-13 | 国际商业机器公司 | 在多线程处理器中改变线程优先级的方法和装置 |
CN101710292A (zh) * | 2009-12-21 | 2010-05-19 | 中国人民解放军信息工程大学 | 一种可重构任务处理系统、调度器及任务调度方法 |
CN104794000A (zh) * | 2014-01-22 | 2015-07-22 | 深圳市沃信科技有限公司 | 一种作业调度方法及系统 |
CN103970603A (zh) * | 2014-05-21 | 2014-08-06 | 哈尔滨工程大学 | 一种基于多级反馈队列的事件注入引擎的任务调度方法 |
Non-Patent Citations (1)
Title |
---|
"基于改进的多级反馈算法的任务调度研究";邱相存;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160715(第07期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107391248A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20180321972A1 (en) | Task management methods and system, and computer storage medium | |
CN101452399B (zh) | 任务二级调度模块及方法 | |
CN107656813A (zh) | 一种负载调度的方法、装置及终端 | |
CN102546946B (zh) | 移动终端处理任务的方法及装置 | |
CN104199739B (zh) | 一种基于负载均衡的推测式Hadoop调度方法 | |
CN104598426A (zh) | 用于异构多核处理器系统的任务调度方法 | |
CN110795254A (zh) | 一种基于php处理高并发io的方法 | |
CN107391248B (zh) | 用于stm32系统的多级反馈队列调度方法 | |
CN109766172A (zh) | 一种异步任务调度方法以及装置 | |
CN112162835A (zh) | 一种异构云环境下实时任务的调度优化方法 | |
CN108681481A (zh) | 业务请求的处理方法及装置 | |
CN114461393A (zh) | 多任务调度方法、装置、电子设备、系统及自动驾驶车辆 | |
CN107589993A (zh) | 一种基于linux实时操作系统的动态优先级调度算法 | |
CN114661460A (zh) | 面向异构众核处理器的ai框架两级并行加速方法 | |
CN114579323A (zh) | 一种线程处理方法、装置、设备及介质 | |
CN110471747A (zh) | 一种dma多通道的调度使用方法、装置及终端设备 | |
CN112181689A (zh) | 一种在云端下进行gpu内核程序高效率调度的运行时系统 | |
CN109918181A (zh) | 基于最差响应时间的混合关键系统任务可调度性分析方法 | |
CN110908794B (zh) | 基于任务窃取算法的任务窃取方法及系统 | |
CN112860401A (zh) | 任务调度方法、装置、电子设备和存储介质 | |
CN101349975B (zh) | 一种在嵌入式操作系统上实现中断底半部机制的方法及装置 | |
CN114896295B (zh) | 大数据场景下的数据脱敏方法、脱敏装置及脱敏系统 | |
CN113051064A (zh) | 任务调度方法、装置、设备及存储介质 | |
CN111353706A (zh) | 多载量自动导引车防死锁的任务调度方法 | |
CN112306670A (zh) | 一种Docker虚拟化场景下的服务器集群优化方法 |
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 | ||
CB03 | Change of inventor or designer information |
Inventor after: Xie Wei Inventor after: Huang Xudong Inventor after: Jiang Chunhong Inventor after: Wu Liqun Inventor after: Huang Kun Inventor before: Wang Yunxing Inventor before: Yu Hailong Inventor before: Wang Hao |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |