发明名称 基于SMP的AEDF任务调度方法
摘要 本发明提供的是一种基于SMP的AEDF任务调度方法。设计了一个运行在SMP上、基于自适应的动态负载平衡方法。该方法能够实时跟踪SMP中当前各处理器的负载状况,动态将不同任务合理地分配到负载较小的处理器中:在任务调度过程中,方法通过对被挂起任务运行时长的统计,来动态调整其下次运行的时间片、周期和截止时间。基于SMP的AEDF任务调度方法能够综合分析当前处理器负载情况、任务完成情况和系统的运行情况,合理地分配处理器资源,从而有效地提高SMP中各个处理器资源的利用率,缩短完成全部任务所需的执行时间,使得SMP的运行效率和使用效能得到有效改进;同时,该方法通过动态调度任务资源的执行顺序,优先保证了紧急任务执行的实时性要求。
申请公布号 CN101446910A 申请公布日期 2009.06.03
申请号 CN200810209643.1 申请日期 2008.12.08
申请人 哈尔滨工程大学 发明人 姚文斌;郑兴杰;王帅元;司艳芳
分类号 G06F9/50(2006.01)I 主分类号 G06F9/50(2006.01)I
代理机构 代理人
主权项 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)如果阻塞队列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)调度结束。
地址 150001黑龙江省哈尔滨市南岗区南通大街145号1号楼哈尔滨工程大学科技处知识产权办公室