[发明专利]协同并发式消息总线、主动构件组装模型及构件拆分方法有效
申请号: | 201310020046.5 | 申请日: | 2013-01-18 |
公开(公告)号: | CN103473031A | 公开(公告)日: | 2013-12-25 |
发明(设计)人: | 龙建 | 申请(专利权)人: | 龙建 |
主分类号: | G06F9/38 | 分类号: | G06F9/38;G06F9/455;G06F9/48;G06F9/50 |
代理公司: | 北京市盛峰律师事务所 11337 | 代理人: | 赵建刚 |
地址: | 213001 江苏省*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 协同 发式 消息 总线 主动 构件 组装 模型 拆分 方法 | ||
技术领域
本发明属于计算机技术领域,具体涉及一种协同并发式消息总线、主动构件组装模型及构件拆分方法。
背景技术
众所周知,软件设计的终极目标为:真实世界是什么样子,软件就应当设计成什么样子,从而实现通过软件模拟真实世界的目的。由于真实世界是纷繁复杂地,如实地模拟真实世界往往并不容易。前人经过多年的实践发现,软件系统对真实世界的每个细节模拟得越逼真,软件就越容易设计、理解与维护。由于面向对象编程真实地模拟了现实世界的事物,容易理解、方便维护、容易变更,因此,面向对象编程取代了面向过程编程,成为目前主流的编程方式。
然而,由于硬件成本等多种因素的限制,在现实世界中,无处不在的、多个对象同时动作的“并行”活动,在单台计算机中,却极少能够真实模拟。现代计算机软件系统中,绝大部分都只呈现“伪并行”活动:从宏观上看,一台计算机能够同时执行多个任务、多个程序,若干对象同时在运行;但从微观上看,在任一瞬间、任一时刻,则只有一个程序在运行。由于处理器速度非常快,它在几个程序间来回快速切换,经过稍长一段时间,我们就觉得这几个程序是在同时执行、同时活动。这种现象,通常称之为“并发”,以区分严格意义上的“并行”活动。
一般在操作系统等中低层软件中,提供相应的并发技术实现机制,并对外提供专门的并发服务接口,以便上位程序能完成并发活动。上位应用程序,则调用这些并发服务接口,使自己呈现为一个或多个并发的任务。
并发实体(任务、进程、线程、纤程等)间的调度操作(用于操作系统、软件总线等),提供了并发技术的实现机制。现代操作系统中,剥夺式调度是普遍采用的调度策略。但它具有若干致命弱点,试列举如下:
(1)堆栈空间问题:剥夺式调度随时可能打断并发实体的执行过程,因此需要保护与恢复并发实体运行环境(最少需要包含指令寄存器等),这需要RAM堆栈空间。在普通运行场合(如PC机),这个问题不突出。但在大量并发实体(如单片机在数千网络连接)的情况下,问题将变得相当突出;在RAM稀缺的特殊场合(如WSN应用)下,调度将变为不可行。
(2)执行效率问题:由于需要保护与恢复并发实体运行环境,这部分调代码的执行是必须增加的。在非常轻量级调度的情况(如TinyOS)下,相对于调度整体执行时间,它所增加的执行时间是非常可观的,严重影响了轻量级调度的执行效率。
(3)竞争共享问题:剥夺式调度随时可能打断并发实体的执行过程,因此,所有并发实体间共享的数据与资源,都成为被竞争的对象,变成临界资源。如果把所有的这些被竞争对象,都用临界区或其它统一的通用措施保护起来,那么系统的整体运行效率将会降低到不可接受的程度。如果精心设计共享结构,只采用通用措施保护部分对象,则在编程与维护代码时,稍不当心就会引发临界资源竞争导致的时序故障(这类故障还特别难以重现与定位),对编程人员与维护人员的职业素养要求将会提高很多,提高了设计与维护成本,降低了系统可靠性。特别是对于大量无规律的共享并发数据(如上百个不同的特殊线程),在编程实践中,一般开发人员都望而生畏,除非特别必要,均避而远之。
(4)竞争复用问题:前述为了效率提升而进行优化的数据共享设计,会带来代码复用性问题。由于针对项目的竞争环境,采用了针对性地消除竞争的共享数据保护代码,这些代码一般不具备普遍的通用性。即使对于其它非常相似的项目,也很有可能面对的是其它不同的数据竞争条件,因此,需要做出另外优化的数据共享设计,不能直接复用原来模块。
TinyOS是加州大学伯克利分校(UC Berkeley)为无线传感器网络WSN(Wireless Sensor Network)开发的微内核操作系统。TinyOS的两层调度方式为:任务调度与硬件事务调度。硬件事务调度由硬件中断激活,可抢占普通任务,主要用于高优先级的快速实时响应。它基本雷同于一般中断处理程序,稍有出入的地方在于:它可以向任务调度发送信号,激活普通任务;同时,还能利用nesC关键字async的异步能力,直接调用进入到nesC构件系统中,调用构件中的命令处理函数,并给构件发送异步事件。
TinyOS的基本任务为无参数函数。任务调度采用协同式的先进先出(FIFO)算法,任务之间互不抢占,没有优先级之分。一旦一个任务获得了处理器,就一直运行到结束。一般用于对时间要求不高的应用,本质上是一种延迟计算DPC(Deferred Procedure Call)机制。TinyOS 2.x调度器可由用户定制与替换。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于龙建,未经龙建许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201310020046.5/2.html,转载请声明来源钻瓜专利网。