本发明专利技术提供的是一种基于SMP的AEDF任务调度方法。设计了一个运行在SMP上、基于自适应的动态负载平衡方法。该方法能够实时跟踪SMP中当前各处理器的负载状况,动态将不同任务合理地分配到负载较小的处理器中:在任务调度过程中,方法通过对被挂起任务运行时长的统计,来动态调整其下次运行的时间片、周期和截止时间。基于SMP的AEDF任务调度方法能够综合分析当前处理器负载情况、任务完成情况和系统的运行情况,合理地分配处理器资源,从而有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效能得到有效改进;同时,该方法通过动态调度任务资源的执行顺序,优先保证了紧急任务执行的实时性要求。
【技术实现步骤摘要】
(一)
本专利技术涉及的是一种提高计算机处理速度的方法,具体地说是一种计算机SMP体系结构中处理器任务调度方法。(二)
技术介绍
多处理器技术是提高计算机运行速度的一种有效技术,它通过多任务并行运算来协同求解复杂问题,以提高计算机的性能;同时,该技术能够利用冗余处理器实现系统重构,来提高系统的可靠性和可用性。对称多处理器结构(SMP:Symmetric Multi-Processor)是一种典型的应用于企业服务器的多处理器体系结构。SMP是一种包含了两个或多个相连处理器、协同处理同一套任务的计算机体系结构。通常,SMP中采用完全相同的处理器,每个处理器含有独占的高速缓存(Cache),各个处理器通过一条总线实现内存等其他系统资源的共享。将大量任务合理、高效地分配到相应的处理器上是SMP系统研究的重点问题之一。当前,SMP结构下任务调度方法主要有静态分配、动态分配、自调度三种形式。静态分配调度方法是指一个任务从开始执行直至完成,都会被分配到同一台处理器上运行。每个处理器上都维护一个专用的就绪进程队列。静态分配调度方法的优点是任务调度的开始小,缺点是使各处理机忙、闲不均。动态分配调度方法是指在系统中设置一个公共的就绪队列,该队列存放着系统中所有的就绪任务。任务调度时,就将被调度到的任务随机的分配到系统中的任一处理器上运行。这种调度方法消除了处理机忙闲不均的现象;但同时造成处理器的cache命中率降低,增加了系统的开销。自调度调度方法在系统中同样设置一个公共的就绪队列,系统中的所有任务都被挂在该队列上。每个处理器在空闲时,就去查看公共就绪队列,从中选择一个任务到该处理器上执行。这种调度方式实现了系统中各处理器的负载均衡;但由于系统中共享一个公共队列,要求系统保证各个处理器必须互斥访问就绪队-->列,导致了任务分派效率的降低。(三)
技术实现思路
本专利技术的目的在于提供一种能合理地分配处理器资源,有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效率得到有效改进的基于SMP的AEDF任务调度方法。本专利技术的目的是这样实现的:其具体方法步骤为: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的下次调度时刻与当前时刻的差值;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的AEDF任务调度方法,其特征是: (1)初始化任务的资源使用参数表; (2)将已初始化的任务根据其下一周期计时时刻从小到大顺序插入到最优可用处理器号对应处理器的等待队列Wait_q↓[i]中;假定最小可用处理器号 为i,i∈[1,N],其对应的处理器为pi,该处理器的等待队列为Wait_q↓[i];然后将i进行加一、对N取模操作,即i=(i+1)%N; (3)如果已初始化任务的特权标记为真,执行步骤4;否则,执行步骤5; (4)将已初始化 的任务插入到Eutil_q↓[i]队列队尾; (5)如果处理器pi当前任务指针不为空,执行步骤6;否则,执行步骤14; (6)将处理器pi当前任务RT↓[i1]从就绪队列Runnable_q↓[i]队列中删除; (7)如果 当前时刻小于处理器pi的下次调度时刻,当前任务RT↓[i1]被抢占或阻塞,将RT↓[i1]插入到阻塞队列Pend_q↓[i]队尾,并设置当前任务RT↓[i1]的截止期限值为:RT↓[i1]的截止期限+RT↓[i1]的周期-pi的下次调度时刻,并将Runnable_q↓[i]指向RT↓[i1]的下一个元素,执行步骤14;否则,暂停当前任务RT↓[i1]的运行,计算任务RT↓[i1]下一周期的截止期限:RT↓[i1]的截止期限+RT↓[i1]的周期;并任务RT↓[i1]按照任务截止期限从小到大的顺序插入到等待队列Wait_q↓[i]中,执行步骤8; (8)如果任务RT↓[i1]的运行时间大于RT↓[i1]的时间片,RT↓[i1]运行超时,执行步骤9;否则,执行步骤13; (9)如果任务RT↓[i1]的周 期的双倍值大于其源周期,将RT↓[i1]的周期与源周期的值互换,执行步骤11;否则,执行步骤10; (10)设置任务RT↓[i1]的源周期为RT↓[i1]的当前周期的值,并将RT↓[i1]的当前周期的值翻倍; (11)如果任务R T↓[i1]的时间片的双倍值大于其源时间片,将RT↓[i1]时间片与其源时间片的值互换,执行步骤13;否则,执行步骤12; (12)设置任务RT↓[i1]的源时间片为RT↓[i1]的当前时间片的值,并将RT↓[i1]的当前时间片的值翻 倍; (13)设置任务RT↓[i1]的截止期限:RT↓[i1]的截止期限+RT↓[i1]的周期; (14)如果就绪队列Runn...
【技术特征摘要】
1、一种基于SMP的AEDF任务调度方法,其特征是:(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)如果阻塞队列Pe...
【专利技术属性】
技术研发人员:姚文斌,郑兴杰,王帅元,司艳芳,
申请(专利权)人:哈尔滨工程大学,
类型:发明
国别省市:93[中国|哈尔滨]
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。