The invention provides a multi-level feedback queue scheduling method for STM32 system, which includes the following steps: S1, defining data structure: S11, establishing working frequency sequence; S12, establishing task execution time matrix; S13, establishing residual resource matrix. Methods: S21, S2, scheduling when multiple tasks to be done, with higher priority tasks first; when a priority in multiple tasks when the first instruction containing more tasks; whenever RTC interrupt arrives, when the task is completed or when the tasks have to be treated before when task scheduling processing of task scheduling processing of the current processing as follows: S211 data structure of each processor core corresponding pretreatment; S212, determine whether the idle processor core. The multilevel feedback queue scheduling method for STM32 system solves the problem that some processor cores are easily damaged due to the fact that the processor core can not be reasonably deployed in the existing technology without idle processor kernel.
【技术实现步骤摘要】
用于STM32系统的多级反馈队列调度方法
本专利技术涉及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中没有进程等待时才去调度Q ...
【技术保护点】
一种用于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] ...
【技术特征摘要】
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]...
【专利技术属性】
技术研发人员:王运兴,余海龙,王皓,
申请(专利权)人:四川华泰电气股份有限公司,
类型:发明
国别省市:四川,51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。