当前位置: 首页 > 专利查询>龙建专利>正文

协同并发式消息总线、主动构件组装模型及构件拆分方法技术

技术编号:9489764 阅读:114 留言:0更新日期:2013-12-25 23:32
本发明专利技术提供一种协同并发式消息总线、主动构件组装模型及构件拆分方法,协同并发式消息总线包括:信息获取模块、并行环形分配器、线性内存块、消息填充模块、并行入队器、消息队列池、排队顺序管理器、入口映射表和系统堆栈。本发明专利技术提供的协同并发式消息总线、主动构件组装模型及构件拆分方法,能够有效克服现有“并发”实现技术的弱点,高效可靠地实现“并发”技术、并行编程,具有普适、廉价、高效、可靠、节能、复用、透明分布、微内核、内在支持对象技术等一系列优点。

【技术实现步骤摘要】
【专利摘要】本专利技术提供一种,协同并发式消息总线包括:信息获取模块、并行环形分配器、线性内存块、消息填充模块、并行入队器、消息队列池、排队顺序管理器、入口映射表和系统堆栈。本专利技术提供的,能够有效克服现有“并发”实现技术的弱点,高效可靠地实现“并发”技术、并行编程,具有普适、廉价、高效、可靠、节能、复用、透明分布、微内核、内在支持对象技术等一系列优点。【专利说明】
本专利技术属于计算机
,具体涉及一种。
技术介绍
众所周知,软件设计的终极目标为:真实世界是什么样子,软件就应当设计成什么样子,从而实现通过软件模拟真实世界的目的。由于真实世界是纷繁复杂地,如实地模拟真实世界往往并不容易。前人经过多年的实践发现,软件系统对真实世界的每个细节模拟得越逼真,软件就越容易设计、理解与维护。由于面向对象编程真实地模拟了现实世界的事物,容易理解、方便维护、容易变更,因此,面向对象编程取代了面向过程编程,成为目前主流的编程方式。然而,由于硬件成本等多种因素的限制,在现实世界中,无处不在的、多个对象同时动作的“并行”活动,在单台计算机中,却极少能够真实模拟。现代计算机软件系统中,绝大部分都只呈现“伪并行”活动:从宏观上看,一台计算机能够同时执行多个任务、多个程序,若干对象同时在运行;但从微观上看,在任一瞬间、任一时刻,则只有一个程序在运行。由于处理器速度非常快,它在几个程序间来回快速切换,经过稍长一段时间,我们就觉得这几个程序是在同时执行、同时活动。这种现象,通常称之为“并发”,以区分严格意义上的“并行”活动。一般在操作系统等中低层软件中,提供相应的并发技术实现机制,并对外提供专门的并发服务接口,以便上位程序能完成并发活动。上位应用程序,则调用这些并发服务接口,使自己呈现为一个或多个并发的任务。并发实体(任务、进程、线程、纤程等)间的调度操作(用于操作系统、软件总线等),提供了并发技术的实现机制。现代操作系统中,剥夺式调度是普遍采用的调度策略。但它具有若干致命弱点,试列举如下:(I)堆栈空间问题:剥夺式调度随时可能打断并发实体的执行过程,因此需要保护与恢复并发实体运行环境(最少需要包含指令寄存器等),这需要RAM堆栈空间。在普通运行场合(如PC机),这个问题不突出。但在大量并发实体(如单片机在数千网络连接)的情况下,问题将变得相当突出;在RAM稀缺的特殊场合(如WSN应用)下,调度将变为不可行。(2)执行效率问题:由于需要保护与恢复并发实体运行环境,这部分调代码的执行是必须增加的。在非常轻量级调度的情况(如TinyOS)下,相对于调度整体执行时间,它所增加的执行时间是非常可观的,严重影响了轻量级调度的执行效率。(3)竞争共享问题:剥夺式调度随时可能打断并发实体的执行过程,因此,所有并发实体间共享的数据与资源,都成为被竞争的对象,变成临界资源。如果把所有的这些被竞争对象,都用临界区或其它统一的通用措施保护起来,那么系统的整体运行效率将会降低到不可接受的程度。如果精心设计共享结构,只采用通用措施保护部分对象,则在编程与维护代码时,稍不当心就会引发临界资源竞争导致的时序故障(这类故障还特别难以重现与定位),对编程人员与维护人员的职业素养要求将会提高很多,提高了设计与维护成本,降低了系统可靠性。特别是对于大量无规律的共享并发数据(如上百个不同的特殊线程),在编程实践中,一般开发人员都望而生畏,除非特别必要,均避而远之。(4)竞争复用问题:前述为了效率提升而进行优化的数据共享设计,会带来代码复用性问题。由于针对项目的竞争环境,采用了针对性地消除竞争的共享数据保护代码,这些代码一般不具备普遍的通用性。即使对于其它非常相似的项目,也很有可能面对的是其它不同的数据竞争条件,因此,需要做出另外优化的数据共享设计,不能直接复用原来模块。TinyOS是加州大学伯克利分校(UC Berkeley)为无线传感器网络WSN(WirelessSensor Network)开发的微内核操作系统。TinyOS的两层调度方式为:任务调度与硬件事务调度。硬件事务调度由硬件中断激活,可抢占普通任务,主要用于高优先级的快速实时响应。它基本雷同于一般中断处理程序,稍有出入的地方在于:它可以向任务调度发送信号,激活普通任务;同时,还能利用nesC关键字async的异步能力,直接调用进入到nesC构件系统中,调用构件中的命令处理函数,并给构件发送异步事件。TinyOS的基本任务为无参数函数。任务调度采用协同式的先进先出(FIFO)算法,任务之间互不抢占,没有优先级之分。一旦一个任务获得了处理器,就一直运行到结束。一般用于对时间要求不高的应用,本质上是一种延迟计算DPC(Deferred Procedure Call)机制。TinyOS 2.x调度器可由用户定制与替换。如图1所示,TinyOS 2.x核心PCB为一个固定长度的字节数组,组成一个FIFO就绪任务队列、以及一个等待任务池。系统内的每个任务均由一个字节的任务ID表示,编号为O?255,其中255表示空任务N0_TASK:即任务不存在。因此,系统内最多可容纳255个有效任务。具体某个应用系统中的实际任务数,也即字节数组的实际长度,则在源代码编译期间,由编译器自动生成。该字节数组存放的是任务就绪标志。如果某任务ID没有收到事件,不需加入到FIFO就绪队列中,则存放N0_TASK标志,进入等待任务池。如果该任务ID有事件发生,激活进入就绪态,则该任务ID字节中存放的是下一个就绪任务,表示本ID已进入FIFO就绪任务队列,等待执行。激活任务ID并行入队时,采用阻塞式的临界区保护法。如果该ID已处于就绪态,则返回忙标志,否则从队尾加入到就绪队列。由于仅有一个字节的ID入队,因此临界区能高速通过,不太影响中断响应速度。这个算法可以避免一个ID多次入队的潜在问题:如果同一 ID可占用多个字节位置,在某些情况下,可能会占满字节数组,导致其它任务无法入队而系统假死。就绪任务ID从队首出队时,同样采用阻塞式的临界区保护法。如果没有就绪任务,则发信号给节电装置,进入节电状态。否则,检索出该任务的入口地址,执行该任务。因为调度器中仅有任务ID,不存在附加参数,因此任务必须是无参数函数。同时,任务是协同式的,前面任务必须完全退出(此时堆栈为空)以后,才能执行下一任务。因此,所有的任务都共享同样的内存堆栈空间。TinyOS 2.x所有基本任务均是无参数函数,每个基本任务仅固定分配一个字节的任务ID,该字节存放任务就绪标志,没有空间存放其它参数。所以,本质上它只是一个信号灯系统。相较于可附带若干参数的消息系统而言,有若干弱点,试列举如下:(I)任务不能携带入口参数:任务退出执行后,堆栈清空,同时信号灯系统无法携带或保存参数。因此,限制了任务的适用范围。只能用额外的措施予以弥补。如:用任务实现的自计数模块。(2)任务信息不能统一管理:由于信号灯系统无法携带参数,外部环境与各任务之间的信息交换方式,完全依赖于外部环境与各任务自行商定,没有统一规范化的表示手段。因此,对于外部环境与任务、任务与任务之间交换的信息,不能直接用统一的手段收集、监视、过滤、控制、管理。只能用额外的措施予以弥补。这对软件系统的调试、测试、控制本文档来自技高网...

【技术保护点】
一种协同并发式消息总线,其特征在于,包括:信息获取模块、并行环形分配器、线性内存块、消息填充模块、并行入队器、消息队列池、排队顺序管理器、入口映射表和系统堆栈;其中,所述信息获取模块用于从接收到的待处理的外部并行的消息中获取目标算子ID以及消息长度值;其中,所述目标算子ID为处理所述消息的算子标识;同时用于获取附加管理消息的附加管理消息长度值,然后计算所述附加管理消息长度值与获取到的所述消息长度值的和,得到消息占用空间值;其中,所述附加管理消息长度值≥0;所述并行环形分配器为非阻塞式并行的空间环形分配器,用于根据所述信息获取模块获取到的所述消息占用空间值,按环形划分原则连续动态的划割所述线性内存块,非阻塞式并行地得到与消息占用空间值相同的空白消息槽;所述消息填充模块用于将所述消息及所述附加管理消息填充到所述并行环形分配器分配的所述空白消息槽,得到非空白消息槽;所述并行入队器用于对所述空白消息槽或所述非空白消息槽进行非阻塞式并行入队操作;所述消息队列池用于缓存尚未处理的已入队消息;所述排队顺序管理器用于根据预设调度策略从所述消息队列池中选择需处理的指定消息,对所述指定消息进行协同的出队操作;所述入口映射表,根据所述目标算子ID查找所述入口映射表,获得与所述目标算子ID对应的函数入口地址;根据所述函数入口地址以及所述指定消息的指定消息槽地址,调用对应的算子执行函数,从而处理出队的所述指定消息;所述系统堆栈为所述消息总线中所有算子共享的堆栈空间;各个算子所共享的系统堆栈空间相互覆盖,为重叠式,即非层叠式;并且,所述消息总线内的算子仅具有就绪状态,即使当所述消息总线内不存在任何消息时,所述消息总线内的算子仍处于就绪状态;一旦当所述消息总线内到达消息时,且当该消息所对应的算子被调度时,被调度到的算子立即获得处理器。...

【技术特征摘要】

【专利技术属性】
技术研发人员:龙建
申请(专利权)人:龙建
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1