CN101446910B - 基于smp的高级最早期限优先算法任务调度方法 - Google Patents
基于smp的高级最早期限优先算法任务调度方法 Download PDFInfo
- Publication number
- CN101446910B CN101446910B CN2008102096431A CN200810209643A CN101446910B CN 101446910 B CN101446910 B CN 101446910B CN 2008102096431 A CN2008102096431 A CN 2008102096431A CN 200810209643 A CN200810209643 A CN 200810209643A CN 101446910 B CN101446910 B CN 101446910B
- Authority
- CN
- China
- Prior art keywords
- task
- time
- execution
- processor
- formation
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供的是一种基于SMP的AEDF任务调度方法。设计了一个运行在SMP上、基于自适应的动态负载平衡方法。该方法能够实时跟踪SMP中当前各处理器的负载状况,动态将不同任务合理地分配到负载较小的处理器中:在任务调度过程中,方法通过对被挂起任务运行时长的统计,来动态调整其下次运行的时间片、周期和截止时间。基于SMP的AEDF任务调度方法能够综合分析当前处理器负载情况、任务完成情况和系统的运行情况,合理地分配处理器资源,从而有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效能得到有效改进;同时,该方法通过动态调度任务资源的执行顺序,优先保证了紧急任务执行的实时性要求。
Description
(一)技术领域
本发明涉及的是一种提高计算机处理速度的方法,具体地说是一种计算机SMP体系结构中处理器任务调度方法。
(二)背景技术
多处理器技术是提高计算机运行速度的一种有效技术,它通过多任务并行运算来协同求解复杂问题,以提高计算机的性能;同时,该技术能够利用冗余处理器实现系统重构,来提高系统的可靠性和可用性。
对称多处理器结构(SMP:Symmetric Multi-Processor)是一种典型的应用于企业服务器的多处理器体系结构。SMP是一种包含了两个或多个相连处理器、协同处理同一套任务的计算机体系结构。通常,SMP中采用完全相同的处理器,每个处理器含有独占的高速缓存(Cache),各个处理器通过一条总线实现内存等其他系统资源的共享。
将大量任务合理、高效地分配到相应的处理器上是SMP系统研究的重点问题之一。当前,SMP结构下任务调度方法主要有静态分配、动态分配、自调度三种形式。
静态分配调度方法是指一个任务从开始执行直至完成,都会被分配到同一台处理器上运行。每个处理器上都维护一个专用的就绪进程队列。静态分配调度方法的优点是任务调度的开始小,缺点是使各处理机忙、闲不均。
动态分配调度方法是指在系统中设置一个公共的就绪队列,该队列存放着系统中所有的就绪任务。任务调度时,就将被调度到的任务随机的分配到系统中的任一处理器上运行。这种调度方法消除了处理机忙闲不均的现象;但同时造成处理器的cache命中率降低,增加了系统的开销。
自调度调度方法在系统中同样设置一个公共的就绪队列,系统中的所有任务都被挂在该队列上。每个处理器在空闲时,就去查看公共就绪队列,从中选择一个任务到该处理器上执行。这种调度方式实现了系统中各处理器的负载均衡;但由于系统中共享一个公共队列,要求系统保证各个处理器必须互斥访问就绪队列,导致了任务分派效率的降低。
(三)发明内容
本发明的目的在于提供一种能合理地分配处理器资源,有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效率得到有效改进的基于SMP的AEDF(Advanced EarliestDeadline First:高级最早期限优先算法)任务调度方法。
本发明的目的是这样实现的:
其具体方法步骤为:
1、初始化任务的资源使用参数表;
2、将已初始化的任务根据其下一周期计时时刻从小到大顺序插入到最优可用处理器号对应处理器的等待队列Wait_qi中;假定最优可用处理器号为i,i∈[1,N],其对应的处理器为pi,该处理器的等待队列为Wait_qi;然后将i进行加一、对N取模操作,即i=(i+1)%N;
3、如果已初始化任务的特权标记为真,执行步骤4;否则,执行步骤5;
4、将已初始化的任务插入到特权队列Eutil_qi队列队尾;
5、如果处理器pi当前任务指针不为空,执行步骤6;否则,执行步骤14;
6、将处理器pi当前任务RTi1从就绪队列Runnable_qi队列中删除;
7、如果当前时刻小于处理器pi的下次调度时刻,当前任务RTi1被抢占或阻塞,将RTi1插入到阻塞队列Pend_qi队尾,并更新当前任务RTi1的下一周期截止期限值为:RTi1的截止期限+RTi1的周期-pi的下次调度时刻,并将Runnable_qi指向RTi1的下一个元素,执行步骤14;否则,暂停当前任务RTi1的运行,计算任务RTi1下一周期的截止期限:RTi1的截止期限+RTi1的周期;并任务RTi1按照任务截止期限从小到大的顺序插入到等待队列Wait_qi中,执行步骤8;
8、如果任务RTi1的运行时间大于RTi1的时间片,RTi1运行超时,执行步骤9;否则,执行步骤13;
9、如果任务RTi1的周期的双倍值大于其源周期,将RTi1的周期与源周期的值互换,执行步骤11;否则,执行步骤10;
10、设置任务RTi1的源周期为RTi1的当前周期的值,并将RTi1的当前周期的值翻倍;
11、如果任务RTi1的时间片的双倍值大于其源时间片,将RTi1时间片与其源时间片的值互换,执行步骤13;否则,执行步骤12;
12、设置任务RTi1的源时间片为RTi1的当前时间片的值,并将RTi1的当前时间片的值翻倍;
13、设置任务RTi1的下一周期截止期限值为:RTi1的截止期限值+RTi1的周期;
14、如果就绪队列Runnable_qi非空,执行步骤15;否则,执行步骤16;
15、设置RTi2为pi的预备任务,将RTi1从就绪队列Runnable_qi中删除,并将Runnable_qi指向RTi1的下一个元素,执行步骤21;
16、如果阻塞队列Pend_qi非空且阻塞任务PEi1下一个周期计时时刻小于或等于当前时刻,将阻塞任务PEi1从Pend_qi中删除,并将其按最后期限值从小到大的顺序插入到就绪队列Runnable_qi队列,设置其为pi的预备任务,并将Pend_qi指向PEi1的下一个元素,执行步骤21;否则,执行步骤17;
17、如果等待队列Wait_qi非空且等待任务WTi1的下一个周期计时时间小于或等于当前时刻,将WTi1从Wait_qi中删除,并将其按最后期限从小到大的顺序插入到就绪队列Runnable_qi中,设置WTi1为pi的预备任务;并将Wait_qi指向WTi1的下一个元素,执行步骤21;否则,执行步骤18;
18、如果特权队列Eutil_qi非空,执行步骤19;否则,执行步骤20;
19、将特权任务EUi1从Eutil_qi中删除,将其按最后期限值从小到大的顺序插入到Runnable_qi队列,设置EUi1为pi的预备任务,并将Eutil_qi指向EUi1的下一个元素,执行步骤21;
20、设置处理器pi的空闲任务为pi的预备任务;
21、通过处理器的下次调度时刻的计算方式计算pi下次调度时刻,设置pi的预备任务的运行时间为pi的下次调度时刻与当前时刻的差值;
所述下次调度时刻计算方法如下:
下次调度时刻用于记录每个处理器正常情况下,即当前任务未被阻塞或被其它任务抢占时下一次进行任务调度的时间,对称多处理器的每个处理完全一样,共分为以下六种情况:
a)Runnable_qi,Wait_qi队列均非空,Pend_qi队列为空:
nst_w=MIN((当前时刻+RTi1的时间片-RTi1的运行时间),WTi1的下一周期计时时刻) ①
pi的下次调度时刻=pi->nst_w ②
其中,nst_w为临时长整型变量;MIN()为最小值函数;
b)Runnable_qi,Pend_qi队列均非空,Wait_qi队列为空:
pi->nst_p=M IN((当前时刻+RTi1的时间片-RTi1的运行时间),PEi1的下一周期计时时刻) ③
pi的下次调度时刻=pi->nst_w ④
其中,nst_p为临时长整型变量;
c)Runnable_qi,Wait_qi,Pend_qi队列均非空时:
经过式①,③计算后
pi的下次调度时刻=MIN(nst_w,nst_p) ⑤
d)Eutil_qi队列非空,但Runnable_qi,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+EUi1的时间片 ⑥
e)Runnable_qi队列非空,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+RTi1的时间片 ⑦
f)Runnable_qi,Wait_qi,Pend_qi,Eutil_qi队列均为空,pi的下次调度时刻大小为下一个任务被插入Wait_qi的时间;
22、如果处理器pi的预备任务的可迁标记为假,执行步骤24;否则,执行步骤23;
23、如果当前时刻与处理器pi的预备任务的迁移起始时刻的差值小于其迁移时限,或系统中的空闲可用处理器集为空,执行步骤24;否则,执行步骤25;
24、调度处理器pi的预备任务到处理器pi上运行,即设置其为pi的当前任务,执行步骤26;
25、计算空闲可用处理器集的最小空闲可用位,将pi的预备任务迁移到处理器最小空闲可用位对应的处理器上运行;
26、查看系统中是否有新的任务,如果有新的任务,则执行步骤1;否则,执行步骤27;
27、调度结束。
所述的资源使用参数表包括:周期、时间片、截止期限、运行时间、源周期、源时间片、下一周期计时时刻、迁移起始时刻、可迁标记、特权标记、迁移时限、当前时刻、空闲可用处理器集、最小空闲可用位、最优可用处理器号、当前任务、空闲任务、预备任务、Runnable_qi、Wait_qi、Eutil_qi、Pend_qi、下次调度时刻。
本发明是一种运行在SMP上、基于自适应的动态负载平衡方法。该方法能够实时跟踪SMP中当前各处理器的负载状况,动态将不同任务合理地分配到负载较小的处理器中:在任务调度过程中,方法通过对被挂起任务(因被阻塞、被抢占、定时器到期或运行超时等原因而暂时停止运行的任务)运行时长的统计,来动态调整其下次运行的时间片、周期和截止时间。基于SMP的AEDF任务调度方法能够综合分析当前处理器负载情况、任务完成情况和系统的运行情况,合理地分配处理器资源,从而有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效能得到有效改进;同时,该方法通过动态调度任务资源的执行顺序,优先保证了紧急任务执行的实时性要求。
其主要创新点如下:
1、根据当前SMP上各处理器的负载情况,将即将运行的任务分派到相对空闲的处理器中,从而,实现了处理器间的负载平衡,提高了处理器的利用率及系统的吞吐量;
2、根据任务的运行情况,动态的调整任务的运行周期,时间片及截止期限;通过调整任务的运行周期及时间片,减少了任务的上下文切换次数,提高了任务的执行效率;通过截止时间调整,提高了被阻塞任务执行优先级,保证了紧急任务的实时性。
(四)附图说明
图1:具有N个处理器的SMP的结构模型图。
图2:具有N个处理器的SMP的数据结构图。
(五)具体实施方式
下面结合附图举例对本发明做更详细地描述:
设每个任务的资源使用参数表为(周期,时间片,截止期限,运行时间,源周期,源时间片,下一周期计时时刻,迁移起始时刻,可迁标记,特权标记,迁移时限),任务根据其所处状态分类为就绪任务,特权任务,等待任务和阻塞任务。它们的定义如下:
周期:表示该任务的相对运行的相对截止时间,如周期为20ms表示任务从周期计时开始,在20ms后必定截止运行;
时间片:表示任务在一个周期内能运行的最长时间;
截止期限:表示任务在一个周期内运行截止时刻;
运行时间:表示任务从每次开始调度计时到运行结束实际占用处理器的时长;
源周期:表示任务在当前周期更新前的周期;
源时间片:表示任务在当前时间片更新前时间片;
下一周期计时时刻:表示任务下一周期的开始计时时间;
迁移起始时刻:表示任务迁移到其它处理器的时刻;
可迁标记:表示为任务能否迁移到其它处理器的标记;
特权标记:表示任务在处理器空闲时能否占用额外的处理器份额;当特权标记为真时,如两个任务各被分配50%的处理器份额,当其中一个被死锁,那么另一个将可占用100%处理器份额来运行。
迁移时限:表示任务连续两次迁移到其它处理器的最少时间间隔。
就绪任务:表示已获得了除处理器资源外其它运行时必需资源的任务;
特权任务:表示特权标记为真的任务,该类型的任务能在处理器空闲时占用额外的处理器份额。
等待任务:表示还未到达其下一周期计时时刻的任务;
阻塞任务:表示在运行过程由于运行所需的资源不足或有优先级更高的任务到来,被抢占而暂停运行的任务。
系统中用全局变量当前时刻,空闲可用处理器集,最小空闲可用位和最优可用处理器号记录着系统的状态;设系统中的每个处理器的资源使用参数表为(当前任务、空闲任务、预备任务、就绪队列、等待队列、特权队列、阻塞队列、下次调度时刻)记录该处理器的当前状态。如图1所示,SMP中有N个处理器,每个处理器都独立的Cache,各处理器通过系统总结共享内存空间。与图1相对应的为SMP数据结构图,如图2如示,与处理器processor1,processor2,......,processorN对应的处理器为p1,p2,p3,......,pN。每个处理器上拥有四个任务队列,如处理器pi上的四个队列分别为Runnable_qi,Wait_qi,Eutil_qi和Pend_qi队列,i∈[1,N]。系统中用位图表示处理器集合,相应位为1表示该位对应的处理器可用,否则,表示该位对应的处理器不可用。例如,......01101位图表示处理器p1,p3,p4......可用。以上全局变量和处理器参数定义如下:
当前时刻:表示当前的系统时间,该参数返回从1970年1月1日0点以来的秒数;
空闲可用处理器集:为一位图类型变量,它表示SMP中既空闲又可用的处理器集合,当所有位均为零,表示该位图为空;否则,为非空;
最小空闲可用位:表示空闲可用处理器集中为1的最低位所在位置;如,
011010100位图的最小可用处理器号为3;
最优可用处理器号:记录着任务初始化时应分配到处理器所对应的处理器编号。
当前任务:为正在该处理器上运行的任务;
空闲任务:为一空任务,不做任何操作,在该处理器空闲时运行;
预备任务:已经被调度并即将在该处理器上运行的任务;
Runnable_qi:为处理器pi上就绪队列队头,其下一元素RTi1为pi的当前任务,其它元素为该处理器上的就绪任务,该队列中任务用RTij表示,此类任务按照其截止期限从小到大的顺序排列;
Wait_qi:为处理器pi上等待队列队头,该队列用于放等待任务,该队列中的任务用WTii表示,此类任务按照其下一周期计时时刻从小到大的顺序排列;
Eutil_qi:为处理器pi特权任务队列队头,当一个任务插入Runnable_qi时,若其特权标记为真,则将该任务也插入Eutil_qi队列尾部,该队列中任务用EUij表示,它们将按照先进先出的顺序被调度;
Pend_qi:为处理器pi阻塞任务队列队头,当一个任务的时间片尚未用完就停止运行时,将会被插入Pend_qi队列尾部,该队列中任务用PEij表示,它们将按照先进先出的顺序被调度。
下次调度时刻:用于记录每个处理器正常情况下,即当前任务未被阻塞或被其它任务抢占时下一次进行任务调度的时间。因对称多处理器的每个处理完全一样,下面,我们将以pi为例,其中,i∈[1,N]。讨论其下次调度时刻获取方式,共分为以下六种情况:
nst_w=MIN((当前时刻+RTi1的时间片-RTi1的运行时间),WTi1的下一周期计时时刻) ①
pi的下次调度时刻=pi->nst_w ②
其中,nst_w为临时长整型变量;MIN()为最小值函数。
pi->nst_p=M IN((当前时刻+RTi1的时间片-RTi1的运行时间),PEi1的下一周期计时时刻) ③
pi的下次调度时刻=pi->nst_w ④
其中,nst_p为临时长整型变量;
经过式①,③计算后
pi的下次调度时刻=MIN(nst_w,nst_p) ⑤
pi的下次调度时刻=当前时刻+EUi1的时间片 ⑥
pi的下次调度时刻=当前时刻+RTi1的时间片 ⑦
首先,初始化系统的全局变量,其中,当前时刻初始化为从硬件读取的系统时间,初始化空闲可用处理器集为一所有位均为1的位图,最小空闲可用位为0,最优可用处理器号为1。
其次,建立调度方法所需的数据结构:依次初始化处理器pi资源使用参数表(当前任务,空闲任务,特权任务,就绪队列,等待队列,特权队列,阻塞队列,下次调度时刻),其中,i∈[1,m]。初始化它们当前任务,空闲任务及特权任务为空指针,并初始就绪队列Runnable_qi,等待队列Wait_qi,特权队列Eutil_qi和阻塞队列Pend_qi指向为空的双链表。
其具体方法步骤为:
1、初始化任务的资源使用参数表;
2、将已初始化的任务根据其下一周期计时时刻从小到大顺序插入到最优可用处理器号对应处理器的等待队列Wait_qi中;假定最优可用处理器号为i,i∈[1,N],其对应的处理器为pi,该处理器的等待队列为Wait_qi;然后将i进行加一、对N取模操作,即i=(i+1)%N;
3、如果已初始化任务的特权标记为真,执行步骤4;否则,执行步骤5;
4、将已初始化的任务插入到特权队列Eutil_qi队列队尾;
5、如果处理器pi当前任务指针不为空,执行步骤6;否则,执行步骤14;
6、将处理器pi当前任务RTi1从就绪队列Runnable_qi队列中删除;
7、如果当前时刻小于处理器pi的下次调度时刻,当前任务RTi1被抢占或阻塞,将RTi1插入到阻塞队列Pend_qi队尾,并更新当前任务RTi1的下一周期截止期限值为:RTi1的截止期限+RTi1的周期-pi的下次调度时刻,并将Runnable_qi指向RTi1的下一个元素,执行步骤14;否则,暂停当前任务RTi1的运行,计算任务RTi1下一周期的截止期限:RTi1的截止期限+RTi1的周期;并任务RTi1按照任务截止期限从小到大的顺序插入到等待队列Wait_qi中,执行步骤8;
8、如果任务RTi1的运行时间大于RTi1的时间片,RTi1运行超时,执行步骤9;否则,执行步骤13;
9、如果任务RTi1的周期的双倍值大于其源周期,将RTi1的周期与源周期的值互换,执行步骤11;否则,执行步骤10;
10、设置任务RTi1的源周期为RTi1的当前周期的值,并将RTi1的当前周期的值翻倍;
11、如果任务RTi1的时间片的双倍值大于其源时间片,将RTi1时间片与其源时间片的值互换,执行步骤13;否则,执行步骤12;
12、设置任务RTi1的源时间片为RTi1的当前时间片的值,并将RTi1的当前时间片的值翻倍;
13、设置任务RTi1的下一周期截止期限值为:RTi1的截止期限值+RTi1的周期;
14、如果就绪队列Runnable_qi非空,执行步骤15;否则,执行步骤16;
15、设置RTi2为pi的预备任务,将RTi1从就绪队列Runnable_qi中删除,并将Runnable_qi指向RTi1的下一个元素,执行步骤21;
16、如果阻塞队列Pend_qi非空且阻塞任务PEi1下一个周期计时时刻小于或等于当前时刻,将阻塞任务PEi1从Pend_qi中删除,并将其按最后期限值从小到大的顺序插入到就绪队列Runnable_qi队列,设置其为pi的预备任务,并将Pend_qi指向PEi1的下一个元素,执行步骤21;否则,执行步骤17;
17、如果等待队列Wait_qi非空且等待任务WTi1的下一个周期计时时间小于或等于当前时刻,将WTi1从Wait_qi中删除,并将其按最后期限从小到大的顺序插入到就绪队列Runnable_qi中,设置WTi1为pi的预备任务;并将Wait_qi指向WTi1的下一个元素,执行步骤21;否则,执行步骤18;
18、如果特权队列Eutil_qi非空,执行步骤19;否则,执行步骤20;
19、将特权任务EUi1从Eutil_qi中删除,将其按最后期限值从小到大的顺序插入到Runnable_qi队列,设置EUi1为pi的预备任务,并将Eutil_qi指向EUi1的下一个元素,执行步骤21;
20、设置处理器pi的空闲任务为pi的预备任务;
21、通过处理器的下次调度时刻的计算方式计算pi下次调度时刻,设置pi的预备任务的运行时间为pi的下次调度时刻与当前时刻的差值;
所述下次调度时刻计算方法如下:
下次调度时刻用于记录每个处理器正常情况下,即当前任务未被阻塞或被其它任务抢占时下一次进行任务调度的时间,对称多处理器的每个处理完全一样,共分为以下六种情况:
a)Runnable_qi,Wait_qi队列均非空,Pend_qi队列为空:
nst_w=MIN((当前时刻+RTi1的时间片-RTi1的运行时间),WTi1的下一周期计时时刻) ①
pi的下次调度时刻=pi->nst_w ②
其中,nst_w为临时长整型变量;MIN()为最小值函数;
b)Runnable_qi,Pend_qi队列均非空,Wait_qi队列为空:
pi->nst_p=M IN((当前时刻+RTi1的时间片-RTi1的运行时间),PEi1的下一周期计时时刻) ③
pi的下次调度时刻=pi->nst_w ④
其中,nst_p为临时长整型变量;
c)Runnable_qi,Wait_qi,Pend_qi队列均非空时:
经过式①,③计算后
pi的下次调度时刻=MIN(nst_w,ns_p) ⑤
d)Eutil_qi队列非空,但Runnable_qi,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+EUi1的时间片 ⑥
e)Runnable_qi队列非空,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+RTi1的时间片 ⑦
Runnable_qi,Wait_qi,Pend_qi,Eutil_qi队列均为空,pi的下次调度时刻大小为下一个任务被插入Wait_qi的时间;
22、如果处理器pi的预备任务的可迁标记为假,执行步骤24;否则,执行步骤23;
23、如果当前时刻与处理器pi的预备任务的迁移起始时刻的差值小于其迁移时限,或系统中的空闲可用处理器集为空,执行步骤24;否则,执行步骤25;
24、调度处理器pi的预备任务到处理器pi上运行,即设置其为pi的当前任务,执行步骤26;
25、计算空闲可用处理器集的最小空闲可用位,将pi的预备任务迁移到处理器最小空闲可用位对应的处理器上运行;
26、查看系统中是否有新的任务,如果有新的任务,则执行步骤1;否则,执行步骤27;
27、调度结束。
基于SMP(对称多处理器)的AEDF(Advanced Earliest Deadline First)任务调度方法具体实施模式是这样的:
SMP上的各处理器完全一样,因此,各处理器的调度特性也完全一样。整个方法具体实施模式是以处理器pi为例依次进行,其中,i初始值为1,i∈[1,N]。,共分四个过程,第一个过程是初始化任务的资源使用参数表及处理器pi的资源使用参数表,及进行任务分派;第二个过程是调整被挂起任务的调度参数;第三个过程是任务调度;第四个过程是设置任务运行的处理器及运行时间。
第一个过程
初始化系统的全局变量(当前时刻、空闲可用处理器集、最小空闲可用位、最优可用处理器号),任务的资源使用参数表(周期,时间片,截止期限,运行时间,源周期,源时间片,下一周期计时时刻,迁移起始时刻,可迁标记,特权标记,迁移时限)和该任务所在处理器的资源使用参数表(当前任务,空闲任务,预备任务,就绪队列,等待队列,特权队列,阻塞队列,下次调度时刻)。并将已初始化的任务分派至最优可用处理器号对应的处理器中(假定最小可用处理器号为i,则其对应的处理器为pi,其中,i∈[1,N])等待队列Wait_qi中,然后将i进行加一、对N取模操作,即i=(i+1)%N,至此,第一过程结束。
第二个过程
如果处理器pi的当前任务RTi1被挂起时,对RTi1的运行时间与其时间片长度进行比较,共分三种情况,1.如果RTi1的运行时间大于RTi1的时间片长,则将当前时间片加倍;后将加倍后的时间片与源时间片长度进行比较,如果加倍后的时间片大于源时间片时长,则将源时间片与时间片值互换;否则,先将源时间片值设置为当前时间片值,并将当前时间片值加倍;依次类推,执行RTi1周期和源周期的更新;2.如果RTi1的运行时间小于RTi1的时间片长,RTi1被阻塞或被其它任务抢占,此时,设置RTi1的下一次截止期限值为:RTi1的当前截止期限+RTi1的周期-pi的下次调度时刻,以此补偿RTi1因此而损失的实时性;3.如果RTi1的运行时间等于RTi1的时间片长,任务正常结束。至此,第二过程结束。
第三个过程
首先,将当前任务RTi1从就绪队列Runnable_qi队列上删除。然后,查看处理器pi的四个任务队列的当前状态,共分五种情况:1.就绪队列Runnable_qi非空,调度就绪任务RTi2为处理器pi预备任务,并将Runnable_qi指向RTi1的下一元素;2.就绪队列Runnable_qi为空,但阻塞队列Pend_qi非空且阻塞任务PEi1的下一周期计时时刻已开始计时,调度阻塞任务PEi1为处理器pi预备任务,并将Pend_qi指向PEi1的下一个元素;3.就绪队列Runnable_qi,阻塞队列Pend_qi均为空,但等待队列Wait_qi非空且等待任务WTi1的下一周期计时时刻已开始计时,调度WTi1为处理器pi预备任务,将并将Wait_qi指WTi1的下一个元素;4.就绪队列Runnable_qi,等待队列Wait_qi,阻塞队列Pend_qi均为空,但特权队列Eutil_qi非空,将调度特权任务EUi1为处理器pi的预备任务,并将Eutil_qi指向EUi1的下一个元素;5.就绪队列Runnable_qi,等待队列Wait_qi,阻塞队列Pend_qi,特权队列Eutil_qi均为空,则运行处理器pi的空闲任务。最后,根据处理器下次调度时刻的计算规则计算处理器pi的下次调度时刻,设置预备任务运行时间为下次调度时刻与当前时刻的时间差值。至此,第三过程结束。
第四个过程
判定处理器pi的预备任务能否在处理器间进行迁移,如果不能迁移,或SMP中无闲处理器,或其能迁移但不满足迁移时限时,则置预备任务在处理器pi上运行;否则,将预备任务迁移到最小空闲可用位数值对应的处理器上运行。然后,查看系统中是否有新的任务,如果有新的任务,则执行过程1;否则,调度结束。第四过程结束。至此整个方法的实施模式结束。
Claims (2)
1.一种基于SMP的高级最早期限优先算法任务调度方法,其特征是:
(1)初始化任务的资源使用参数表;
(2)将已初始化的任务根据其下一周期计时时刻从小到大顺序插入到最优可用处理器号对应处理器的等待队列Wait_qi中;假定最优可用处理器号为i,i∈[1,N],其对应的处理器为pi,该处理器的等待队列为Wait_qi;然后将i进行加一、对N取模操作,即i=(i+1)%N;
(3)如果已初始化任务的特权标记为真,执行步骤4;否则,执行步骤5;
(4)将已初始化的任务插入到特权队列Eutil_qi队列队尾;
(5)如果处理器pi当前任务指针不为空,执行步骤6;否则,执行步骤14;
(6)将处理器pi当前任务RTi1从就绪队列Runnable_qi队列中删除;
(7)如果当前时刻小于处理器pi的下次调度时刻,当前任务RTi1被抢占或阻塞,将RTi1插入到阻塞队列Pend_qi队尾,并更新当前任务RTi1的下一周期截止期限值为:RTi1的截止期限+RTi1的周期-pi的下次调度时刻,并将Runnable_qi指向RTi1的下一个元素,执行步骤14;否则,暂停当前任务RTi1的运行,计算任务RTi1下一周期的截止期限:RTi1的截止期限+RTi1的周期;并任务RTi1按照任务截止期限从小到大的顺序插入到等待队列Wait_qi中,执行步骤8;
(8)如果任务RTi1的运行时间大于RTi1的时间片,RTi1运行超时,执行步骤9;否则,执行步骤13;
(9)如果任务RTi1的周期的双倍值大于其源周期,将RTi1的周期与源周期的值互换,执行步骤11;否则,执行步骤10;
(10)设置任务RTi1的源周期为RTi1的当前周期的值,并将RTi1的当前周期的值翻倍;
(11)如果任务RTi1的时间片的双倍值大于其源时间片,将RTi1时间片与其源时间片的值互换,执行步骤13;否则,执行步骤12;
(12)设置任务RTi1的源时间片为RTi1的当前时间片的值,并将RTi1的当前时间片的值翻倍;
(13)设置任务RTi1的下一周期截止期限值为:RTi1的截止期限值+RTi1的周期;
(14)如果就绪队列Runnable_qi非空,执行步骤15;否则,执行步骤16;
(15)设置RTi2为pi的预备任务,将RTi1从就绪队列Runnable_qi中删除,并将Runnable_qi指向RTi1的下一个元素,执行步骤21;
(16)如果阻塞队列Pend_qi非空且阻塞任务PEi1下一个周期计时时刻小于或等于当前时刻,将阻塞任务PEi1从Pend_qi中删除,并将其按最后期限值从小到大的顺序插入到就绪队列Runnable_qi队列,设置其为pi的预备任务,并将Pend_qi指向PEi1的下一个元素,执行步骤21;否则,执行步骤17;
(17)如果等待队列Wait_qi非空且等待任务WTi1的下一个周期计时时间小于或等于当前时刻,将WTi1从Wait_qi中删除,并将其按最后期限从小到大的顺序插入到就绪队列Runnable_qi中,设置WTi1为pi的预备任务;并将Wait_qi指向WTi1的下一个元素,执行步骤21;否则,执行步骤18;
(18)如果特权队列Eutil_qi非空,执行步骤19;否则,执行步骤20;
(19)将特权任务EUi1从Eutil_qi中删除,将其按最后期限值从小到大的顺序插入到Runnable_qi队列,设置EUi1为pi的预备任务;并将Eutil_qi指向EUi1的下一个元素,执行步骤21;
(20)设置处理器pi的空闲任务为pi的预备任务;
(21)通过处理器的下次调度时刻的计算方式计算pi下次调度时刻,设置pi的预备任务的运行时间为pi的下次调度时刻与当前时刻的差值;
所述下次调度时刻计算方法如下:
下次调度时刻用于记录每个处理器正常情况下,即当前任务未被阻塞或被其它任务抢占时下一次进行任务调度的时间,对称多处理器的每个处理完全一样,共分为以下六种情况:
a)Runnable_qi,Wait_qi队列均非空,Pend_qi队列为空:
nst_w=MIN((当前时刻+RTi1的时间片-RTi1的运行时间),WTi1的下一周期计时时刻) ①
pi的下次调度时刻=pi->nst_w ②
其中,nst_w为临时长整型变量;MIN()为最小值函数;
b)Runnable_qi,Pend_qi队列均非空,Wait_qi队列为空:
pi->nst_p=M IN((当前时刻+RTi1的时间片-R Ti1的运行时间),PEi1的下一周期计时时刻) ③
pi的下次调度时刻=pi->nst_w ④
其中,nst_p为临时长整型变量;
c)Runnable_qi,Wait_qi,Pend_qi队列均非空时:
经过式①,③计算后
pi的下次调度时刻=MIN(nst_w,nst_p) ⑤
d)Eutil_qi队列非空,但Runnable_qi,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+EUil的时间片 ⑥
e)Runnable_qi队列非空,Wait_qi,Pend_qi队列均为空:
pi的下次调度时刻=当前时刻+RTi1的时间片 ⑦
f)Runnable_qi,Wait_qi,Pend_qi,Eutil_qi队列均为空,pi的下次调度时刻大小为下一个任务被插入Wait_qi的时间;
(22)如果处理器pi的预备任务的可迁标记为假,执行步骤24;否则,执行步骤23;
(23)如果当前时刻与处理器pi的预备任务的迁移起始时刻的差值小于其迁移时限,或系统中的空闲可用处理器集为空,执行步骤24;否则,执行步骤25;
(24)调度处理器pi的预备任务到处理器pi上运行,即设置其为pi的当前任务,执行步骤26;
(25)计算空闲可用处理器集的最小空闲可用位,将pi的预备任务迁移到处理器最小空闲可用位对应的处理器上运行;
(26)查看系统中是否有新的任务,如果有新的任务,则执行步骤1;否则,执行步骤27;
(27)调度结束。
2.根据权利要求1所述的基于SMP的高级最早期限优先算法任务调度方法,其特征是:所述的资源使用参数表包括:周期、时间片、截止期限、运行时间、源周期、源时间片、下一周期计时时刻、迁移起始时刻、可迁标记、特权标记、迁移时限、当前时刻、空闲可用处理器集、最小空闲可用位、最优可用处理器号、当前任务、空闲任务、预备任务、Runnable_qi、Wait_qi、Eutil_qi、Pend_qi、下次调度时刻。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102096431A CN101446910B (zh) | 2008-12-08 | 2008-12-08 | 基于smp的高级最早期限优先算法任务调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN2008102096431A CN101446910B (zh) | 2008-12-08 | 2008-12-08 | 基于smp的高级最早期限优先算法任务调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101446910A CN101446910A (zh) | 2009-06-03 |
CN101446910B true CN101446910B (zh) | 2011-06-22 |
Family
ID=40742599
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2008102096431A Expired - Fee Related CN101446910B (zh) | 2008-12-08 | 2008-12-08 | 基于smp的高级最早期限优先算法任务调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101446910B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766143A (zh) * | 2016-08-16 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 数据处理管理系统和任务管理、任务调度方法及装置 |
Families Citing this family (25)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
GB0803644D0 (en) | 2008-02-28 | 2008-04-02 | Rapiscan Security Products Inc | Scanning systems |
CN101976247B (zh) * | 2010-09-30 | 2013-01-16 | 北京新媒传信科技有限公司 | Rss数据采集方法及系统 |
CN102455934A (zh) * | 2010-10-25 | 2012-05-16 | 北大方正集团有限公司 | 工作流的调度方法和装置 |
CN102834807B (zh) * | 2011-04-18 | 2015-09-09 | 华为技术有限公司 | 多处理器系统负载均衡的方法和装置 |
JP6025849B2 (ja) * | 2011-09-07 | 2016-11-16 | ラピスカン システムズ、インコーポレイテッド | マニフェストデータをイメージング/検知処理に統合するx線検査システム |
US10058777B2 (en) | 2013-11-21 | 2018-08-28 | Tencent Technology (Shenzhen) Company Limited | Task execution method, apparatus and system |
CN104657203B (zh) * | 2013-11-21 | 2018-07-20 | 腾讯科技(深圳)有限公司 | 任务执行方法、装置和系统 |
CN103793273A (zh) * | 2014-01-24 | 2014-05-14 | 北京京东尚科信息技术有限公司 | 一种基于Redis的分布式队列调度方法及装置 |
CN104935523B (zh) * | 2014-03-21 | 2018-06-15 | 中国移动通信集团公司 | 一种负载均衡的处理方法和设备 |
CN105096122B (zh) * | 2014-04-16 | 2019-04-12 | 阿里巴巴集团控股有限公司 | 一种分片式交易匹配方法和装置 |
US11200058B2 (en) * | 2014-05-07 | 2021-12-14 | Qualcomm Incorporated | Dynamic load balancing of hardware threads in clustered processor cores using shared hardware resources, and related circuits, methods, and computer-readable media |
CN104199738B (zh) * | 2014-08-11 | 2018-05-25 | 阔地教育科技有限公司 | 一种多数据处理设备协同工作方法及系统 |
CN104216779B (zh) * | 2014-09-28 | 2018-10-02 | 北京经纬恒润科技有限公司 | 一种中断执行方法及装置 |
CN104657222B (zh) * | 2015-03-13 | 2017-11-21 | 浪潮集团有限公司 | 一种面向smp调度系统的优化方法 |
CN105791166B (zh) * | 2016-04-14 | 2019-05-24 | 北京思特奇信息技术股份有限公司 | 一种负载均衡分配的方法及系统 |
CN106250219B (zh) * | 2016-07-27 | 2019-04-30 | 南京国电南自维美德自动化有限公司 | 基于智能化测时让度技术的保护平台优化调度方法 |
CN106294801A (zh) * | 2016-08-16 | 2017-01-04 | 华中科技大学 | 一种多处理器实时系统中的更新事务分派方法 |
CN106445686A (zh) * | 2016-09-21 | 2017-02-22 | 东软集团股份有限公司 | 资源分配方法及装置 |
CN107346263B (zh) * | 2017-06-29 | 2021-01-12 | 上海联影医疗科技股份有限公司 | 任务执行方法、存储介质以及计算机设备 |
CN107562527B (zh) * | 2017-08-28 | 2020-12-18 | 北京翼辉信息技术有限公司 | 一种rtos上的smp的实时任务调度方法 |
CN107844367A (zh) * | 2017-10-25 | 2018-03-27 | 上海斐讯数据通信技术有限公司 | 一种多任务的管理方法及系统 |
CN108255604A (zh) * | 2017-12-07 | 2018-07-06 | 中国航空工业集团公司西安航空计算技术研究所 | 一种smt多核操作系统的负载均衡方法 |
CN111858200B (zh) * | 2020-06-22 | 2023-10-20 | 银清科技有限公司 | 系统测试中的吞吐量控制方法、装置及电子设备 |
CN111767131A (zh) * | 2020-09-03 | 2020-10-13 | 武汉中科通达高新技术股份有限公司 | 一种流媒体任务管理方法及装置 |
CN114461053B (zh) * | 2021-08-24 | 2022-11-18 | 荣耀终端有限公司 | 资源调度方法及相关装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508682A (zh) * | 2002-12-17 | 2004-06-30 | 国际商业机器公司 | 任务调度的方法、系统和设备 |
CN1841330A (zh) * | 2005-03-29 | 2006-10-04 | 国际商业机器公司 | 用于管理多节点smp系统的方法和系统 |
US20080196031A1 (en) * | 2005-03-14 | 2008-08-14 | Attilla Danko | Adaptive partitioning scheduler for multiprocessing system |
-
2008
- 2008-12-08 CN CN2008102096431A patent/CN101446910B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1508682A (zh) * | 2002-12-17 | 2004-06-30 | 国际商业机器公司 | 任务调度的方法、系统和设备 |
US20080196031A1 (en) * | 2005-03-14 | 2008-08-14 | Attilla Danko | Adaptive partitioning scheduler for multiprocessing system |
CN1841330A (zh) * | 2005-03-29 | 2006-10-04 | 国际商业机器公司 | 用于管理多节点smp系统的方法和系统 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107766143A (zh) * | 2016-08-16 | 2018-03-06 | 阿里巴巴集团控股有限公司 | 数据处理管理系统和任务管理、任务调度方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN101446910A (zh) | 2009-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101446910B (zh) | 基于smp的高级最早期限优先算法任务调度方法 | |
Su et al. | An elastic mixed-criticality task model and its scheduling algorithm | |
Moir et al. | Pfair scheduling of fixed and migrating periodic tasks on multiple resources | |
Easwaran et al. | Resource sharing in global fixed-priority preemptive multiprocessor scheduling | |
CN102253857B (zh) | 一种多核环境下的Xen虚拟机调度控制方法 | |
CN101290668B (zh) | 一种分时作业动态调度方法和装置 | |
CN102135903B (zh) | 基于硬件虚拟化的Xen实时性增强系统及其方法 | |
CN105117285B (zh) | 一种基于移动虚拟化系统的非易失性存储器调度优化方法 | |
Singh | An algorithm to reduce the time complexity of earliest deadline first scheduling algorithm in real-time system | |
CN104572106A (zh) | 一种基于小内存处理大规模数据的并行程序开发方法 | |
Lai et al. | Sol: Fast distributed computation over slow networks | |
US20130097382A1 (en) | Multi-core processor system, computer product, and control method | |
CN101324851A (zh) | 线程调度方法及其装置 | |
Becker et al. | Scheduling multi-rate real-time applications on clustered many-core architectures with memory constraints | |
CN101968749B (zh) | 虚拟机过度分配环境下的mpi消息接收方法 | |
CN102662636B (zh) | 一种基于两层虚拟机的并行作业调度的方法 | |
Zou et al. | RTGPU: Real-time GPU scheduling of hard deadline parallel tasks with fine-grain utilization | |
Moulik et al. | COST: A cluster-oriented scheduling technique for heterogeneous multi-cores | |
Zhou et al. | Energy-efficient speculative execution using advanced reservation for heterogeneous clusters | |
Xilong et al. | An energy-efficient virtual machine scheduler based on CPU share-reclaiming policy | |
Abba et al. | Deadline based performance evaluation of job scheduling algorithms | |
Gouasmi et al. | Cost-efficient distributed MapReduce job scheduling across cloud federation | |
Saranya et al. | Dynamic partitioning based scheduling of real-time tasks in multicore processors | |
Macariu et al. | Limited blocking resource sharing for global multiprocessor scheduling | |
Ma et al. | I/O throttling and coordination for MapReduce |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20110622 Termination date: 20171208 |