分布式实时嵌入式系统任务调度研究
发布时间:2024-11-28
发布时间:2024-11-28
维普资讯 http://
Mirc mp trAp l ain o. 0 No 5 2 0 c o o ue pi t sV i2 . . . 0 4 c o
研究与设计
微型电脑应用
20 0 4年第 2 0卷第 5期
分布式实时嵌入式系统任务调度研究叶军摘要本文把分布式系统调度分为全局调度和本地调度两个调度层次;了满足实时性能。线程分为非时间片线为把程以及时间片线程两类。文同时指出了分布式嵌入操作系本
谢康林系统。本文将从L n x内核分析对现有L n x的任务调度机制 iu iu实施改进,以满足嵌人系统的分布性和实时性要求。
统的任务调度略。同时在 Ln x开放代码的基础上修改 Ln x iu iu内核的调度策略 .步实现了分布式实时调度策略并进行了初测试。
二、布式系统的调度层次分实时系统按特征分为动态实时调度和静态实时调度。动态实时调度是在运行期间进行调度;静态实时调度是在行而
关键词抢占式高度 ( )间片线程全局调度本非时地调度动态调度静态调度
前事先就调度好的 .当一个事件发生时,行的调度程序仅仅运到一个表中查看应该执行什么操作。因为动态实时调度过于
一
、
引言
严格,因此大多数系统采用了静态实时调度。文的分布式高本度也是建立在静态实时调度基础上的。
随着络技术以及和数字信息技术的高速发展,信息家在电、医疗仪器、能汽车、业控制、信设备各个领域。人智工通嵌式系统无处不在。随着网络技术的飞速发展,许多嵌人式应在用中,往包含许多设备,如智能中央空调,时分布式系往譬这统就是实现这种系统最方便、现实的方法。最这是因为: ( )时间关键的任务放在不同的C U中可以更容易保证 1 P满足它的死线要求; ( )把处理器放在设备级上更便于实现设备之间的接 2口:
我们对分布式系统的调度层次分两级:地调度和全局本调度。本地调度涉及到将一个进程分配到一个具体的处理器上.而全局调度处理选择在什么地点上的哪个处理器上执行
已知的进程。全局调
度也称为处理机分配,局决策必须在本全地决策之前做出。 在全局调度中,调度算法提供了两级调度目标:优调度最
方案和次优调度方案。于最优调度算法。对调度者必须掌握竞争进程的状态及相关的信息。优化可以用完成时间、源利最资用率、系统吞吐量或者它们之间的任何组合来衡量。优化方最案计算在超过两个处理器的情况下由于 NP(多项式 )难非困的问题而不进行。所以常采用次优方案。次优方案分为两类:
( )如果系统中包含从供应商购买的几个设备或系统 3
它们之间也含有自己的CP或者还包含有通信接口。常不 u.通可能把系统的任务放到这些设备中。者相反把设备的任务或放到系统中; ( )使用几个小 C U比使用一个大 C U更便宜; 4 P P
近似次优方案和使用启发式方法的方案。在本系统中。用了采启发式方法的次优调度算法。启发式次优调度者在整个调度算法中使用启发式方法 .以下是本系统中采用的启发式调度算法:
( )分布式的系统能够利用本身的高度容错性使得在高 5性能领域分布式系统具有得天独厚的优势。 所以,多嵌人式系统利用分布式系统实现 .分布的处许在
需要大量进程通信的相关进程应当位于相近的位置,
最好是位于同一节点;
理机之间利用通信链路连接起来。数据链路可以是高速并行数据据总线 (紧耦合型 )也可以是串行数据链路。,技术的发展 .在嵌人式领域迫切需要分布式 .由此分布式
如果某个系统的负载已经很重 .要再调度其它进程不
到该节点;
在本地调度中。们继承了集中系统的调度机制来实现我自愿的分配 .进行了扩充,并以适应嵌人系统的实时要求。
嵌人系统成为热点;而嵌入式操作系统中最重要是实时性,因此对分布式实时操作系统的研究成为急需。操作系统中。在对
系统影响最大的是任务调度机制,文将从分布调度以及实本时性方面研究任务调度机制。Iiu n x的源码公开为其推广提供了广阔的发展前景 . n Li—
三、布式系统的调度策略分我们把多处理机中
的 C U指定为处理机集 (r cso P p o es r
L I X为嵌人式操作系统提供了一个极有吸引力的选择,和 u—它 nx相似, i以核心为基础、完全内存保护 .任务多进程的操作多
s t。一个 C U都属于而且仅属于一个处理机集, e)每 P线程被指定到处理机集。因而每一个处理机集都有一个可供分配的
『, l乍 1
.交通大学计算机科学海 j[程系硕 L究生 f海 2 0 (研 0 3
谢康林 f交通大学计算机科学与 r程系博 f}导师上海 2 0 O 海 。. O3
9
维普资讯 http://
Mir c mp trAp l ain 12, o 5 2 0 co o ue pi t sVo. 0 N . . 0 4 c o
研究与设计
微型电脑应用
20 0 4年第 2 O卷第 5期
C U集合和一个需要计算权限的线程集合。调度算法的工作 P就是将线程的均衡有效地指定到 CP上。为了调度需要 . U每一
据结构锁定的互斥体。用来保证一次只有一个C U操作队它 P,●●●、●●l r●●●●、●●●● L列。二个变量是指向优先级最高的线程。第它保证了没有线程
个处理机集都是拥有同其他处理机集无关的专有资源和消这种机制给了进程控制自己线程的很多权力。一个进程
更高的优先级,是当前最高优先级的线程有可能是较低的但优先级。这个线程可帮助系统寻长优先级最高的线程以避免
费者的一个封闭世界。
查找数据头部空队列的情况。除了图 2所示的全局运行队之外,一个 CP也有它自每 U
可以将一个重要线程指定到一个没有其他线程运行的 C U P上.因而可以保证这个线程可以一直运行。可以随着工作的它
己的本地运行队列。每一个本地队列中保持着所有始终绑定到这个 CP的线程 .能它们是从属于某个 C U的I0设备 U可 P/的驱动器。由于它们只能在某个 CP上运行,以将它们放 U所人全局运行队列是不正确的。处理机叙述 1的全局运行队列处理机叙述 2的全局运行队列O
紧张将线程重新分配到 CP集上以保证工作负载的均衡, U对于嵌入式系统的实时性
能是个很好的利用。
在该系统中,程调度算法主要是基于优先级。线每一个进程都有一个优先级,每一个线程也都有一个它的进程内的相对优先级。一个线程的绝对优先级是它的进程的优先级和它
自己的相对优先级的和。内核跟踪着每个处于活动状态的线程的优先级 .它总是使那些有着绝对优先级的线程运行。一在个有 k个处理机的系统上,有 k个最高优先级的线程运行。将
优先级 ( o高)
为了适应嵌入式操作系统对实时性的要求,个附加的一试验证明非常有用的算法被添加进来:据不同应用的特点根设定一个特定的优先级 .它将所有的优先级高于这一级的线
程和低于这一级的线程分成两类 .于高先级的线程 .如图处 ( 1一a所示 )比如 A和 B是非时间片的,这样的线程开始运 .当行时 .它会一直运行直到它自愿释放 C U( P例如由于信号量被阻塞 )或者一个更高级别的线程进入活动状态。般来说 . .一它不会仅仅因为运行了很久而停止。高优先级A A
— 0— 0
( )1低 3
3l
图 2全局运行队列和各处理机集的运行队列数组
实现分布式调度的算法如下:当一个线程阻塞、出或者退耗尽它的时限时,线程所在的 C U首先查找本地队列是否该 P有活动的线程。这种检查仅仅时查看本地运行队列的计算器如果它非 0 ̄ CP从队列头部开始查找所指向的优先级最高] U的线程。如果本地运行队列为空 .就会在全局队列中使用相同的算法。唯一的区别就在于全局队列在进行查找之前必须先要进行封锁。如果在这两个队列中都没有可以运行的线程 .那么系统会运行一个特殊 il de线程直到有某个线程等待运行为止。
这些钱程是非时间的B B
这些钱程是非时间的
如果找到了一个可以运行的线程 .先判断该线程是否首为非时间片线程 .果为 1该线程是非时间片线程 )则一直如 ( .低优先级 ( ) a () b运行址到它自愿释放 CP为止; U如果为 0该线程为时间片线 (程 )它就被调度并运行一个量程 ( u nu .量程结束时 . . q a
tm)在 系统会检查本地和全局运行队列来寻打具有相同或更高优先级的线程,提条件是所有本地运行队列线程的优先队列来前寻长具有相同或更高优先级的线程,提条件是所有本地运前图 1时间片线程和非时间线程
另一类线程,图 1 ( )图 1 ( )如一 a和一 b所示,线程 C将投入运行,当它运行完一个 C UP时间片后被放到相应优先级线程队的未尾,而线程 D将要得到一个时间片。在没有 CP竞争 U
机制的情况下 .它们将不断地按时间片切换。 这种机制为大多数据关时应用程序提供了足够的方法。 系统调用能改变进程和线程的优先级,这样应用程序能告诉系统哪些程序是最重要的,哪些是不重要的。附加的调度算法能支持 S se V实时处理和系统进程。 ytm 同每一个处理机集相关的是一个运行队列数组 .图 2如 所示。这个矩阵中有 3 2个队列 .对应着当前优先级从 0到 3 1的线程。当一个优先级 n的线程变为可运行状态时,它将添加到队列 n的尾部 .个当前不能运行的线程并不在任何一个一队列中出现。
行队列线程的优先级要比所有全局运行队列线程的优先级高。果打到了合适的线程,如系统就会进行线程交换。如果没有找到,么这个线程就可以再运行一个量程。程可以被抢那线
占。在多处理机中,量程的长度可以根据可以运行的线程数量的不同而不同可以运行的线程数量越多和 CP的数量越 U
少,量程的长度就越短。种算法即使在重负载的系统中对于这短请求也具有良好的相应时间 .在轻负载的系统中则效率而很高(即使这种系统重量程很长 )。针对分布式嵌入系统的特点 .我们实现钩子 ( o k算法, ho ) 对线程调度进行详细控制。钩子算法是为了解决许多线程共同工作来解决一个问题的情况。钩子允许一个线程将自己的
每一个运行队列有三个变量。第一个变量是用于实现数
1 0
维普资讯 http://
Mir c mp trA p i t n o. 0, .,0 4 co o ue p l ai sV 12 No 5 2 0 c o
研究与设计
微型电脑
应用
20 0 4年第 2 O卷第 5期
优先级降到绝对最低并保持若干秒的系统调用,个操作给这其他线程一个运行的机会。当时间耗尽之后进程的优先级会被恢复到原始值。
加了一个钩子调度策略 ( C D HOOK) S HE—
扩充全局调度策略
全局调度策略即处理器分配,理选择在什么地点上哪处个处理器上执行已知的进程。在系统中,我们扩充 wh l— oe sh d l(函数, c e ue )负责处理全局处理机集的调度,成全局的完处理器的分配。 w oe sh d l(中,用了启发式的调度在 h l- c e ue )使
综合以上,考虑分布式操作系统的实时性能,操作系统对的进程调度机制,了使用一般操作系统的调度机制,如进除譬程、程、通信等,们扩展了一些概念:如全局强度、线同我譬本地调度、理机集、处时间片线程和非时间片线程、了策略。钩
算法:需要大量进程间通信的相关进程应当位于邻近的位 置,一般是位于同一节点;带有少量优先关系或无优先关系 的可分割进程很容易分布,将它们进行分布; -果某个系就 如≥
三、 iu I n x系统中的实现策略 L n x的调茺采用非抢占的调度策略, iu iu Ln x虽然也支持实时性,只是针对低实时系统,高实时系统并没有处理机但对制,且 In x虽然支持对称多处理机系统,因为多处理机而 u i但
统的负荷已经很重,不要再调度其它进程到该节点。因为分布式系统的多样性以及复杂性,全局调度更复杂 . 这方面到目前为止并没有证明之有效的策略上 .述调度策上
略只是针对我们系统的一个应用。
系统的复杂性也没有提供具体的关施策略。因此,们对 ln我— iU X内核进行了扩充和修改,以适应上术宫的分布式实时嵌入系统任务调度思想。
修改本地调度策略
Liu n x的进程调度由 sh d l(执行,度函数完成以下 c e ue )调任务:义 pe定 rv和 n s指针、理调度任务队列、整运行进 et处调程队列、择下一个要运行的进程队列等在 sh d l,选 c e ue中
根据分布式关时系统的算法,行大量修改。其是在运行队列进尤中,系统需要维护全局运行队列以及等待队列,和各处理集的运行队列以及等待队列。 另外 .需要把 L n x高度中抢占性高度策略修改为部还 iu分抢占式调度。部分抢占式调度即:在进程的优先级高于 rg e— La—p ir y常数,系统初始化时设置 ),抢占式调度 Ir r i ( l ot在时是的,以满足系统的实时要求;当某处理机中的运行队列和等而待队列中的进程的优先级均低于指定优先级时,用非抢占使式调度。
首先修改扩充了数据结构
L n x中最重要的数据结构之一是 ts - sre结构, iu a k tu t每个进程都有一个 ts— src ak tu t数据结构, a k tu t称为 T s—sr c“进程控制块” C ts—src容纳了一个进程的所有信即P B。 a k tu t息,系统对进程控制的唯一手段 .是最有效的手段。是也 Ln x为每个新创建的进程动态的分配一个 ts— sr e iu a k tu t
结构, iu I n x支持两种线程;通进程和实时进程。实时进程 普具有一定程序的紧迫性 .要求对外部事件做出非常快的响应;而普通进程则没有这种限制。所以调度程序要区分对待这两种进程。总之 .含进程所有信息的 ts— sr c数据结构是包 a k tu t非常庞大的,的所有域按其功能主要有以下:它 1进程状态 ( tt ) . S ae; 2进程调度状态 ( c e uigIfr t n) . S h d l no mai; n o
以上针对 In x进行的修改只涉及到进程调度部分的内 u i容.与进程调度修改相关的 L n x其它部分 . iu同样需要大量修改 .于本文只是研究在分布式实时系统中的调度机制以及鉴算法,以对其它部分的修改不作讨论。所
3各种标识符 ( e t ir) . I n f s; d ie4进程通信有关信息 (P Itr P o esC mmu i— . IC.n e r cs o nc at n) i o;
四、论结采用上述方法修改内核源代码,出了一定的代价 .如付例
5时间和定时器信息 ( me n mes; . Ti
sa dTi r )
6进程联接信息 ( ik ) . Ln s;7文件系统信息 ( i y tm) . Fl S se; e
修改 ts— sr c a k tu t的结构、内核设计成可抢占的、加了全将增局调度策略、及大量修改本地调度策略等。文只是探讨了以本在分布式实时系统中的静态调度机制。 经过大量的工作 . L n x中的任务调度策略以及项相对 iu
8虚拟内存信息 ( ru l moy; . Vita Me r ) 9页面管理信息 ( a e; . p g ) 1. 0对称多处理器信息 ( MP; S ) l. 1其他信息; 为支持分布式多处理机集 . S在 MP信息中,要增加字需段:n a t po es r用来记录进程最前一次运行的处理机 Itls- rcso .集,与原来的官段 It rcso (程当前使用的处理机集 ) n o es r进 p配合以关现启发式调度算法中的就近原则。 在进程调度状态信息 ( ce uig I fr t n中,先 S h d l no ma i )首 n o增加一个字段,e ua- p ir y界定优先级,个常数 )高 rg lr r i ( ol是 .于该常数的进程即为非时间片进程,则为时间片线程,否在 p l y调度策略 )段对应的调度策略 (来有 S HE ) oi ( c字原 C I一RRS CHⅡ ) F F CHE一 I OS D— AI CHE S D— H0(K )要增加 )需一
关的内容的修改扩充后编译,在双 CP系统上进行了大量并 U的测试。述分布式实时调度策略能够很好的运行,生了策上产略中应有的效果 .这只是作为一个测试。但由于分布式系统本身的多样性和复杂性,作为一种解决方案还需要大量的工作 . 以上策略以及修改一种有益的尝试。
任务调度机制对操作系统性能的影响最大,是操作系也统中研究最为热点的问题。由于分布性和实时性,分布式实时操作系统的研究更为复杂,文提出调度的概念以及策略对本分布式系统提供了借鉴。随着研究的深入 .市式实时系统的分任务调度机制必将形成完成整而可行的机制
个调度策略 S HED— AI(对非时间片进程 )另外还增 C针,
1 1
维普资讯 http://
http://
Mirc mp trA piain o. O, o 5 2 0 c o o ue p l t sV 12 N .,0 4 c o
研究与设计
微型电脑应用
20 0 4年第 2 O卷第 5期
参考文献[]彭晓明, 1王强编著。Liu n x核心源代码分析[。北京: M]人民邮电出版社。2 0 01
设计与实现[。北京: M]电子工业出版社,0 1 2 0[][ Wiin sal g 7关] la m t ln s著。操作系统一内核与设计原理 l i[。北京: M]电子工业出版社,0 1 2 0[]嵌入式L n x报道。 e l i n x简介[] ht:/ 8 iu R a—T meLiu 0S。tp/WWW.p c e i .c m/ o u n s ie a u e 2 01 8 2 1 . o k tx o d c me t/t r t r/ 0 0 0 0 6h m t
[]Jry E pi.L n x a n e e d d o eaig s se 2 er p l n iu sa mb d e p rtn y tm[] ht/ www.mb d e .o 9/e 9 1 . t OS . t p:/ e e d d c m/ 7 f3 7 O hm[]陈莉君编著。深入分析 Ln x内核源代码。北京:民邮 3 iu人电出版社。 2 0 02
[]著。分布式操作系统[。北京: 9 M]电子工业出版社,9 9 1 9[O 1]孔祥营、桂桂编著。嵌入式关时操作系统 Vx r s及柏 wo k其开发环境 T rao中国电力出版社 ond。
[]李善平, 4刘文峰译。Liu n x内核 2 4源代码分析大全[] . M。机械工业出版社。 2 0 01
[ 1 o e n . ol著。分布式操作系统原理与实践。机械工 1]D re L G l i业出版社。 2 0 03
[]郭玉东编著。Ln x操作系统结构分析。西安电子科技大 5 iu学出版社。20 02
(稿日期:0 3年 1收 20 1月 1日) 0
[]An rw s T n n a m, b rs Wo d ul 6 de , a e b u Alet, o h l著。操作系统:£刍乌
(接第 8页 )上
策略 C也称逆转策略,在第 1~n个执行的作业中随机地选取第j次和第 J次执行的作业,次序C。 在。中第j次到第j次。。
执行的作业之间的子次序以反方向插入,其余不
变,时的次此∞ 一序为 Ct。比如 C一234157986 j一2 j—7则。 , , 2,Cl 2 9 7 5 1 4 3 8 6一 。
, 聪¨¨"删¨:己 -
伯●
0 一
㈨竺==
.
策略D在第 1~n个执行的作业中随机地选取第J和第 次 j次执行的作业,设 j z在次序 C假 t,<j。中将第 j次执行的作业。
安排到第 j次执行的作业之后, 其余不变,时的次序为 C。此。比如 C一234 157986 j一2 j 7则。 , l,2 .—C 24 1 5 79 3 8 6。一 0——————一———— ——一————————一
l '
————
——
0
200
4 O0
60 0
80 0
1 0 00
12 00
1 00 4
1 0 80
18 00
五、例分析算假设逾期惩罚的作业调度问题参数如下: n一 8,个作每业的执行时间:t一{, .,,,,,}每个作业执行的最{} 8 76 54 32 1 . 后截止时间:d}{ 6 2 . 1 1, 0 6 3 1 .能完成的罚{一 3, 8 2, 1,,,}未 5
图 1解 8个作业的策略 C的仿真过程 }●■●}f
六、束语结本文讨论了模拟退火算法的 4种策略来解决逾期惩罚的作业调度问题,过测试推荐采用策略 C。若把这几种策略混经
款:一{,,,,,.,}{} 12 45 62 72。假设算法的参数相同,始温 P起度 T一 1 0 0 .止温度 T。 1退火速度 a . 9 00 0终一,一0 9,各种算法各随机测试 10次,果如表 1示。 0结所表 1结果比较算法结果比较
合在一起 .与遗传算法的思想融在一起,能效果会更好,或可因此还有许多工作有待研究。
参考文献最差解1 7 1 8 1 5 1 7 O O O 2
平均时间/平均值 S策略 A 策略B 策略 C 策略 D 03 .4 03 .5 O 3 .1 03 .7 4 9 .1 6 9 .9 4 5 .2 8 1 .9
最好解
[]杨浩.型与算法[]北京:方交通大学出版社, 0 2 1模 M .
北 20:1 4— 1 4 45
[]邢文循,金星.代优化计算方法[ .京:华大学 2谢现 M]北清出版社,9 9 9— 1 9 19:0 2.
从表 1可以看出,略 C,以使迭代过程突破局部最优策可圈而跳到另一个搜索空间。策略 A和策略 B其次。策略 D效果最差,要的时间也多。需图1显示了策略C的迭代过程 .坐纵标表示总罚款,横坐标表示迭代次数。最优调度次序为 8 其—7—
[]KI P 3 RK ATRI K C S,GE AT J VE CHIJ L T R, C R.Opi t— miainb i ltda n aig J .S i c,1 8, 2: z t ysmuae n e l[] ce e 9 3 2 0 o n n6 1 6 0 7 8 .
[]康立山,云,矢勇.模拟退火算法[ .京:学 4谢尤等. M]北科出版社, 9 4: 0 1 1 19 1— 5. 5
6 5—3— 1总罚款为 0——4—2,。
(稿日期:0 3年 1收 20 0月 2 1日) 1 2
上一篇:天然气设备冰堵原因及防治措施