优先级位图算法的一种空间优化方法

文档序号:6333863阅读:2007来源:国知局
专利名称:优先级位图算法的一种空间优化方法
技术领域
本发明属于嵌入式系统应用,尤其是实时调度算法技术领域。
背景技术
优先级位图算法(PBA-Priority Bitmap Algorithm)是嵌入式操作系统中支持多优
先级、多任务的关键算法,其核心思想是“空间换取时间”,即以增加存储空间的代价 来换取高效、稳定的调度。PBA的特点在于对于确定的优先级规模,PBA算法耗时是 定值,即与就绪队列中的任务数无关,这就使得PBA能够保证在确定的时间内完成对最 高优先级任务的查找过程,避免了对实时任务响应时间的不确定性。PBA的缺点是空间 复杂度过高,这使得扩展PBA使其支持更多优先级时需要极高的代价,极端情况下甚至 是无法实现的。中的PBA最多支持64个具有不同优先级的任务,0为最高优先级,63为最低优先级。(1) PBA所需数据结构
优先级就绪组(OSRdyGrp) 8bit (如图1所示) 优先级就绪表(OSRdyTbl) 64bit(如图1所示) 优先级映射表(OSMapTbl) 8Byte(如图2所示) 优先级判定表(OSUnMapTbl) 256Byte(如图3所示)。值得说明的是对于确定的优先级规模,图2中的优先级映射表OSMapTbl和图3 中的优先级判定表OSUnMapTbl都是大小和内容固定的表格。实践中它们都是存储在存 储器中的固定数据。(2) PBA的工作原理
不至于引起混淆的情况下,新到达和执行完毕的任务优先级均记为p,获取进入就绪 状态的最高优先级记为hp,C语言描述的PBA工作过程如下 A当任务进入就绪状态 OSRdyGrp|=OSMapTbl[p 3]; OSRdyTbl[p 3]|=OSMapTbl[p&0x07]; B当任务退出就绪状态
if ((OSRdyTbl[p 3]&= OSMapTbl[p&0x07]) ==0) OSRdyGrp&= OSMapTbl[p 3]; C获取进入就绪态的最高优先级 high3Bit=OSUnMapTbl[OSRdyGrp]; low3Bit=OSUnMapTbl[OSRdyTbl[high3Bit]]; hp= (high3Bit 3) +low3Bit ;
由PBA的工作原理可知,对于确定的优先级规模,PBA只需极少且次数固定的存储 器访问操作和位运算操作,算法耗时与就绪队列中的任务数无关。这一特性是PBA的最
3大优点,即无论就绪队列中的任务数有多少,PBA都能在一个固定时间内以极快的速度 找到具有最高优先级的任务。为方便下文描述,特作以下说明
从优先级判定表OSUnMapTbl中分别读取high3Bit和low3Bit的操作简记为“查表操作”。由于优先级判定表OSUnMapTbl决定了 PBA的空间复杂度,故本文对PBA的空 间复杂度和OSUnMapTbl的空间复杂度不做区分。在实践中,若log/的结果不是整数,则对其向上取整即可。(3) PBA的空间复杂度与PBA的扩展困局
若PBA支持的优先级数为2N,OSRdyGrp用u个bit表示,OSRdyTbl的每行用v个 bit表示,则必有uXv=2n。取n=max{u,v},则OSUnMapTbl需要2n个Byte的存储空间。 故可记PBA的空间复杂度为0(2n)。考虑将PBA支持的优先级数扩展到256(16X16) 个,则当u=v=16时,OSUnMapTbl所需存储空间最少,为64KByte (216Byte)。若将PBA 支持的优先级数扩展到1024 (32 X 32)个,则当u=v=32时,OSUnMapTbl所需存储空间最 少,为 4GByte (232Byte)。在嵌入式设备的应用环境中,设备体积、存储器容量、能耗等因素均无法满足 这种巨量的存储器开销,然而在智能家居系统、普适计算环境、宇航应用、现代武器系 统等环境中往往需要实时处理大量优先级不等的就绪任务,因此如何有效降低PBA的空 间复杂度就成为一个极具实践意义的课题。(4)现有解决方案
文献A(郭勐,黄江洪,王贞松.实时操作系统II的多任务改进方法[J],计算机工程与 应用,2005年12月)提出压缩OSUnMapTbl冗余信息的方法来降低PBA的空间复杂度。 该文提出两种方法方法I仅存储OSUnMapTbl的第一行和第一列数据,方法II仅存储 OSUnMapTbl的第一行数据,两种方法的空间复杂度同为0(2弋。对于支持256个优先级的PBA,方法I至少需2X28Byte,方法II最少需要 28Byte。对于支持1024个优先级的PBA,方法I至少需2X216Byte,方法II最少需要 216Byte。虽然以上两方法使PBA的空间复杂度有所降低,但同时使查表过程复杂化,增 加了 PBA算法耗时。应用方法I时查找最高优先级任务的操作如下
if ((OSRdyGrp & OxOF) ==0)
high3Bit =OSUnMapTbl [16+ (OSRdyGrp 4)];
else
high3Bit =OSUnMapTbl [OSRdyGrp & OxOF]; if ((OSRdyTbl[high3Bit] & OxOF) ==0) low3Bit=OSUnMapTbl [16+ (OSRdyTbl [high3Bit] 4)]; else
low3Bit =OSUnMapTbl [OSRdyTbl [high3Bit] &0x0F]; hp= ( high3Bit 3) + low3Bit;
应用方法II时查找最高优先级任务的操作如下 if ((OSRdyGrp & OxOF) ==0)high3Bit =OSUnMapTbl [OSRdyGrp 4] + 4; else
high3Bit =OSUnMapTbl [OSRdyGrp & OxOF];
if ((0SRdyTbl[high3Bit] & OxOF) ==0)
low3Bit =OSUnMapTbl [OSRdyTbl [high3Bit] 4] + 4;
else
low3Bit =OSUnMapTbl [OSRdyTbl [high3Bit] & OxOF]; hp= ( high3Bit 3) + low3Bit;
很明显,相对于原始的查表操作,文献A的方案虽然将PBA的空间复杂度由0(2n) 降为0(2"2),但同时增加了 PBA的调度耗时,恶化了 PBA的实时调度性能。文献B(刘卫,程明霄,王晓荣.实时系统优先级位图调度算法的改进[J].微计 算机信息,2007,第23卷,第2-2期)在上述方法I的基础上提出用扩展数组维数的方 法进一步降低PBA的空间复杂度。对于支持512(8X8X8)个优先级的PBA,文献B的 扩展方案使OSUnMapTbl只需32Byte (2 X 28/2),但对于支持1024 (8 X 8 X 16)个优先级的 PBA而言,需要512Byte(2X216/2)。虽然空间复杂度进一步降低,但该方案中的查表过 程更加复杂,进一步恶化了 PBA的实时调度性能。综上所述,尽管文献A和文献B在一定程度上降低了 PBA的空间复杂度,但这 些改进都是以查表过程的复杂化、PBA调度耗时的增加为代价的,都在一定程度上恶化 了 PBA的实时调度性能。详细内容请参考文献A和文献B。

发明内容
基于现有PBA扩展方案的不足,本发明利用组合逻辑电路替代优先级判定表 OSUnMapTbl,使PBA的空间复杂度降为O (1),同时降低算法耗时,提高了 PBA的实时
调度能力。优先级位图算法的一种空间优化方法,在嵌入式系统中支持多优先级、多任务 实时调度,其特征在于,用组合逻辑电路替代优先级判定表;对于支持2N个优先级的优 先级位图算法,优先级就绪组OSRdyGrp用u个bit表示,优先级就绪表OSRdyTbl的每 行用v个bit表示,取n=maX丨uM;作为替代优先级判定表OSUnMapTbl的组合逻辑电路
分别设置n个输入信号和log/个输出信号;取m=n/2,k. = log2s ,组合逻辑电路的输入
信号记为Ay,An_2,…,A0,输出信号记为Bh,Bk_2,…,Bp B0 ;输入信号 和输出信号采用如下控制手段
1)任意Bk都是m个信号的“或”,且这m个信号都形如
AA-iA-2 '"AA-;
2)记^^为臥第j个“Ax”,l<j<m,产生為t的算法如下 for (i = 0 ,j = 1 ; i<n ; i++)if ( (i k ) % 2 == 1) AkXj = i ; j++;
}
如上手段所确定的组合逻辑电路仅由一级“与门”和一级“或门”组成,原PBA从 OSUnMapTbl中读取数据的地址信号和读出的数据分别映射为组合逻辑电路的输入信号 和输出信号,故此组合逻辑电路的功能与原PBA中的OSUnMapTbl是完全等价的。


图1 现有技术PBA优先级就绪组。 图2:现有技术PBA优先级映射表。 图3:现有技术PBA优先级判定表。
具体实施例方式考虑2N个优先级的PBA,OSRdyGrp用u个bit表示,OSRdyTbl的每行需要v
个bit表示,则必有uXv=2n。取n=max丨u,v!,基于前文分析可知OSUnMapTbl需要2n个
Byte的存储空间。故对OSUnMapTbl的查表操作需要n个地址信号,每个存储单元中数
据至多只需用log/个bit表示。因此对应组合逻辑电路的输入信号和输出信号分别应有
n个和log/个信号线。取m=n/2,i = log/,替代组合逻辑电路的输入信号记为Ay,
An_2,…,A0,输出信号记为 Bh,Bk_2,…,B,, B。。任意Bk都是m个信号的“或”,且这m个信号都形如
这m个“Ax”与n和k有关,记为Bk第j个“Ax”,1 <j <m,产生的算
法如下
for (i = 0 ,j = 1 ; i<n ; i++)
{
if ( (i k ) % 2 == 1) A^ = i ; j++;
}
实施例1 :
考虑支持64个优先级的PBA: n=8,m=4,k=3。则输入信号为A^A。,输出信号 为氐 氏。依据上述算法所产生的“Ax”如表4所示
输出信号4 个 “ax” 的 “X”b013 5 7b2 3 6 7b24 5 6 7
表4
故替代组合逻辑电路有
权利要求
1.优先级位图算法的一种空间优化方法,在嵌入式系统中支持多优先级、多任务实 时调度,其特征在于,用组合逻辑电路替代优先级判定表;对于支持优先级的优先 级位图算法,优先级就绪组OSRdyGrp用u个bit表示,优先级就绪表OSRdyTbl的每行用 ν个bit表示,取n=max丨uM;作为替代优先级判定表OSUnMapTbl的组合逻辑电路分别设置η个输入信号和kg/个输出信号;取m=n/2,i = Iog2",组合逻辑电路的输入信号记为Alri,An_2,…,A1, A0,输出信号记为Blrf,Bk_2,…, B1, B0;输入信号和输出信号采用如下控制手段1)任意Bk都是m个信号的“或”,且这m个信号都形如jr-i為一2 ""AiAQ.;2)记为Bk第j个“Ax”,l<j<m,产生的算法如下for (i = 0,j = 1 ; i<n ; i++){if ( (i>> k ) % 2 == 1 ) A^ =i; j++;
全文摘要
本发明公开了优先级位图算法(PBA-PriorityBitmapAlgorithm)的一种空间优化方法,在嵌入式系统中支持多优先级、多任务实时调度,其特征在于,用组合逻辑电路替代优先级判定表。本发明依据优先级判定表OSUnMapTbl内容上的确定性,用组合逻辑电路替代优先级判定表OSUnMapTbl,原PBA从OSUnMapTbl中读取数据的地址信号和读出的数据分别映射为组合逻辑电路的输入信号和输出信号,引入本发明可使PBA空间复杂度降为O(1)的同时减少调度耗时,提高了PBA的实时调度能力。
文档编号G06F9/46GK102012837SQ20101050987
公开日2011年4月13日 申请日期2010年10月18日 优先权日2010年10月18日
发明者曾华燊, 申志军 申请人:西南交通大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1