[发明专利]基于SMP的AEDF任务调度方法有效
| 申请号: | 200810209643.1 | 申请日: | 2008-12-08 |
| 公开(公告)号: | CN101446910A | 公开(公告)日: | 2009-06-03 |
| 发明(设计)人: | 姚文斌;郑兴杰;王帅元;司艳芳 | 申请(专利权)人: | 哈尔滨工程大学 |
| 主分类号: | G06F9/50 | 分类号: | G06F9/50 |
| 代理公司: | 暂无信息 | 代理人: | 暂无信息 |
| 地址: | 150001黑龙江省哈尔滨市南岗区南通*** | 国省代码: | 黑龙江;23 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 基于 smp aedf 任务 调度 方法 | ||
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、下次调度时刻。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工程大学,未经哈尔滨工程大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/200810209643.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:供电变压器监测防盗追踪器
- 下一篇:防掉眼镜架





