贝贝花花包包店,精品555皮具,钱夹,皮夹

字体: | 推荐给好友 上一篇 | 下一篇

ACE应用-第3章 应用模式语言开发可扩展ORB中间件

发布: 2008-6-13 13:42 | 作者: Douglas C. Schmidt | 来源: 转载 | 查看: 230次

 
3.3.3.5 通过线程专有存储模式减少锁竞争和优先级调换
 
上下文:领导者/跟随者模式允许ORB中的应用和组件并发地运行。但是,并发的主要缺点是需要序列化对共享资源的访问。在ORB中,常见的共享资源包括动态内存堆、CORBA::ORB_init初始化工厂所创建的ORB伪对象引用、POA中的主动对象映射[22],以及先前描述的Acceptor、Connector和Reactor组件。完成序列化的常用方法是在被多个线程共享的各个资源上使用互斥锁。
 
问题:在理论上,通过同时执行多个指令流,使ORB多线程化可以改善性能。此外,通过允许每个线程同步地、而不是反应式地或异步地执行,多线程还可以简化ORB的内部设计。但是,在实践中,多线程ORB常常并不比单线程ORB执行得更好,甚或会更糟,原因是(1)获取/释放锁的代价,以及(2)当高优先级和低优先级线程竞争同样的锁时所产生的优先级调换[40]。此外,由于用于避免竞争状态和死锁的复杂的并发控制协议,开发者还难以对多线程ORB进行编程。
 
解决方案?/FONT>>线程专有存储模式:使用线程专有存储模式是使“序列化对ORB中共享资源的访问”所需的锁定数量最小化的有效方式 [8]。该模式允许ORB中的多个线程使用一个逻辑上全局的访问点来获取线程专有的数据,而不会给每次访问带来锁定开销。
通常,线程专有存储应在下述情况下被应用:必须通过全局可见的访问点来访问由在各个线程内的对象共享的数据;此访问点在“逻辑上”与其他线程共享,但对于每个线程来说在“物理上”却是唯一的。
 
在TAO中使用线程专有存储模式:TAO使用线程专有存储模式来最小化实时应用的锁竞争和优先级调换。TAO中的各个线程在内部使用线程专有存储来存储它的ORB核心组件,例如,Reactor、Acceptor和Connector。如图3-13所示,当线程访问这些组件中的任何一个时,线程通过使用专有钥来作为线程内部的线程专有状态的索引而获取该组件。因而,访问线程专有ORB状态不需要额外的锁定。
 
 
图3-13 在TAO中使用线程专有存储模式
 
3.3.3.6 通过策略模式支持可互换的ORB行为
 
上下文:可扩展ORB必须在它们的对象适配器中支持多种请求多路分离和调度策略。同样地,它们必须在它们的ORB核心里支持多种连接建立、请求传递,以及并发请求处理策略。
 
问题:开发ORB的一种方式是只提供静态的、不可扩展的策略,它们典型地通过以下方式来配置:
 
  • 预处理器宏某些策略是由预处理器宏的值来决定的。例如,因为线程并不是在所有OS平台上都可用,常常会使用条件编译来选择一种可行的并发模型。
  • 命令行选项其他的一些策略是由命令行上标志的有无来控制的。例如,命令行选项可用于有选择地为支持多线程的平台而启用某些ORB并发策略。[24]。
 
虽然这两种配置方法被广泛地使用,它们仍然是不灵活的。例如,预处理器宏仅支持编译时策略选择,而命令行选项只传达了有限数量的信息给ORB。而且,这些硬编码的配置策略完全脱离了任何它们可能会影响的代码。因而,想要使用这些选项的ORB组件必须(1)知道它们的存在,(2)了解值的范围,以及(3)为每个值提供适当的实现。这样的限制使其难以开发高度可扩展的、通过可透明地配置的策略编写的ORB。
那么ORB怎样(1)允许通过与其他ORB组件无关和透明的方式来替换组件策略的子集,以及(2)封装每种策略的状态和行为来使对一个组件的变动不会偶然地影响整个ORB?
 
解决方案?/FONT>>策略模式:应用策略模式是支持多种可透明地“插用”(pluggable)的ORB策略的有效方法 [15]。该模式分解出算法可选方案间的相似性,并显式地将策略名与它的算法和状态关联起来。而且,策略模式还去掉了对策略实现的词法依赖,因为应用仅仅通过公共的基类接口来访问专门化的行为。通常,策略模式应该在应用的行为可通过多种可互换策略进行配置时使用。
 
在TAO中使用策略模式:TAO使用多种策略来分解出常常被硬编码进传统ORB的行为。图3-14中演示了若干这样的策略。例如,TAO在它的对象适配器中支持多种请求多路分离策略(例如,理想哈希 vs. 主动式多路分离[36]),并在它的ORB核心中支持多种连接管理策略(例如,进程级缓存式连接 vs. 线程专有缓存式连接)和处理器并发策略(例如,反应式 vs. 领导者/跟随者的变种)。
 
 
图3-14 TAO中的ORB核心和POA策略
 
3.3.3.7 使用抽象工厂模式合并ORB策略
 
上下文:TAO支持许多潜在的策略变种。表3-1显示了一个简单的策略例子,用于创建TAO的两种配置。配置1是航空控制应用,它具有确定性的实时需求[11]。配置2是电子医学成像应用[41],它具有高吞吐量需求。一般而言,正确地合成所有ORB策略必须消除下面两种需求带来的压力:(1)确保语义兼容的策略的配置,以及(2)简化大量独立策略的管理。
 
 
策略配置
应用
并发
分派
多路分离
协议
航空控制
Thread-per-priority
基于优先级
理想哈希
VME底板
医学成像
Thread-per-connection
FIFO
主动式多路分离
TCP/IP
表3-1实例应用和它们的ORB策略配置
 
问题:在复杂的ORB软件(以及其他类型的软件)中大量使用策略模式会产生不合需要的副作用:可扩展性变得难以管理,原因如下:
 
  • 配置和改进的复杂化ORB源码可能会与硬编码的对策略类型的引用搅在一起,从而使配置和改进复杂化。例如,在特定的应用领域中(比如实时航空控制或医学成像),许多独立的策略必须和谐地工作。但是,挨个地通过名字来确定这些策略需要很麻烦地用一组策略(在另一领域中可能会不同)来替换所选择的策略。
  • 语义不兼容特定的ORB策略配置并不总是能兼容地交互。例如,表3-1中所示的用于调度请求的FIFO策略可能不能与thread-per-priority并发体系结构一起工作。问题源于“以到达顺序调度请求”(也就是,FIFO排队) vs. “基于相对优先级分派请求”(也就是,占先式的基于优先级的线程分派)之间的语义不兼容。而且,某些策略只在特定的前提被满足时才有用。例如,理想哈希多路分离策略通常只对那些对所有仆人进行离线配置的系统才是可行的[22]。
 
怎样才能减少高度可配置的ORB管理它的众多策略所带来的复杂性,并在组合离散的策略时实现语义的一致性呢?
 
解决方案?/FONT>>抽象工厂模式:应用抽象工厂模式是将多种ORB策略合并进语义兼容的配置的有效方式 [15]。该模式提供单一访问点,集成所有用于配置ORB的策略。具体的子类随即聚合相互兼容的应用特有或领域特有的策略,这些策略可以通过一种在语义上有意义的方式被一起替换。一般而言,抽象工厂模式应在下述情况下使用:应用必须合并许多策略的配置,每种策略都具有必须一起改变的多种可选方案。
 
在TAO中使用抽象工厂模式:TAO的所有ORB策略都被合并进两个抽象工厂中,这两个工厂被实现为单体(Singleton)[15]。如图3-15所示,一个工厂封装客户特有的策略,另一个工厂封装服务器特有的策略。这些抽象工厂封装服务器中的请求多路分离、调度和分派策略,以及在客户和服务器中都有的并发策略。通过使用抽象工厂模式,TAO可以方便而一致地配置不同的ORB特性。
 
 
图3-15 TAO中所用的工厂
 
3.3.3.8 通过组件配置器模式动态地配置ORB
 
上下文:有许多计算资源(比如内存和CPU)的成本正在持续下降。但是,ORB还是必须避免过度地消耗有限的系统资源。对于需要小内存占用和可预测的CUP使用的嵌入式及实时系统来说,这样的节约是特别必要的。许多应用还可以从动态扩展ORB的能力(也就是,允许它们的策略在运行时被配置)中获益。
 
问题:尽管策略和抽象工厂模式简化了ORB针对特定应用需求和系统特性的定制,这些模式还是有可能为可扩展ORB带来以下问题:
 
  • 高资源占用策略模式的广泛使用可能会极大地扩大被配置进ORB中的策略的数目,从而增加运行ORB所需的系统资源。
  • 不可避免的系统停机时间如果使用抽象工厂来在编译时或链接时静态地配置策略,就很难增强现有的策略或增加新策略,而不(1)改变策略的消费者或抽象工厂的现有源码,(2)重新编译和链接ORB,以及(3)重启运行中的ORB和它们的应用仆人。
 
尽管没有明确地使用策略模式,SunSoft IIOP的确允许应用在运行时改变特定的ORB策略。但是,这些不同的策略必须在编译时被静态地配置进SunSoft IIOP。而且,随着可选方案数目的增长,实现它们所需的代码数量也会增长。例如,图3-16演示SunSoft IIOP的改变并发策略的方法。
 
 
图3-16 SunSoft IIOP硬编码的策略使用
 
可能会被并发策略的选择影响的每个区域的代码都被相信是独立于其他区域而工作的。这样的决策点的增殖增加了代码、以及未来的增强和维护的复杂性。而且,指定策略的数据类型的选择使得集成新的并发体系结构变复杂了,因为可能必须改变类型(bool)、还有将策略分类符解码为动作的程序结构,if (do_thread) then … else …。
一般而言,静态配置只对少量的、固定数目的策略来说是可行的。但是,静态地配置复杂的ORB中间件(1)使改进复杂化,(2)增加了系统资源占用,以及(3)导致不可避免的用于修改现有组件的系统停机时间。
那么ORB实现怎样才能减少策略和抽象工厂模式的普遍使用所带来的“过大、过于静态”的副作用呢?
 
解决方案?/FONT>>组件配置器模式:应用组件配置器模式是增强ORB的动态性的有效方式 [8]。该模式使用显式的动态链接[8]机制来在安装时和/或运行时在ORB中获取、利用,以及/或者移去自定义策略和抽象工厂对象的运行时地址绑定。广泛可用的显式动态链接机制包括SVR4 UNIX中的dlopen/dlsym/dlclose函数[42]和Windows NT的WIN32子系统[43]中的LoadLibrary/GetProcAddress函数。TAO所用的ACE包装外观可移植地封装了这些OS API。
通过使用组件配置器模式,使得ORB策略的行为与策略实现何时被配置进ORB得以去耦合。例如,ORB策略可在编译时、安装时、甚或运行时从动态链接库(DLL)链接进ORB。而且,通过允许应用开发者和/或管理员只动态链接特定ORB特性所需的那些组件,组件配置器模式可以减少ORB的内存占用。
一般而言,组件对象模式应被用于(1)应用想要动态配置它的构成组件时,以及(2)由于可能性的数目过多、或不能预计值的范围,传统技术,比如命令行参数,不足以胜任时。
 
在TAO中使用组件配置器:TAO联合使用组件配置器模式和策略及抽象工厂模式来动态地安装它所需的策略,而不用(1)重新编译或静态重链接现有的代码,或是(2)终止并重启现有的ORB和它的应用仆人。这样的设计允许为特定的平台和应用需求而裁剪TAO的行为,而无需访问或修改ORB的源码。
此外,组件配置器模式允许应用在运行时定制TAO的特性。例如,在TAO的ORB初始化阶段,它使用OS提供的链接机制(由ACE包装外观封装)来为特定的使用情况链接适当的具体工厂。图3-17显示为TAO所支持的不同应用领域(航空控制和医学成像)而调谐的两个工厂。
 
 
图3-17 在TAO中使用组件配置器模式
 
在图3-17所示的配置中,组件配置器已查询comp.conf脚本,并在进程中安装了航空控制具体工厂。使用这一ORB特性的应用将通过一组特定的并发、多路分离和分派策略来配置。医学成像具体工厂驻留在外在于现有ORB进程的的DLL中。为配置不同的ORB特性,此工厂可以在TAO的ORB服务器初始化阶段动态安装。
 
3.3.4 设计挑战和应对它们的模式总结
 
表3-2总结了在“ORB设计挑战”与“模式语言中我们用于在TAO中应对这些挑战的模式”之间的映射。该表的焦点是由个体模式所消除的压力。但是,TAO还可以从模式语言中多个模式之间的协作中获益。例如,接受器和连接器模式利用反应堆模式来通知它们何时在OS级上有连接事件发生。
 
压力
应对模式
抽象低级系统调用
ORB事件多路分离
ORB连接管理
高效并发模型
可插式策略
组相类似的初始化
动态运行时配置
包装外观
反应堆
接受器-连接器
领导者/跟随者
策略
抽象工厂
组件配置器
表3-2 压力和消除它们的模式总结
 
而且,模式常常必须进行协作,以减少孤立地应用它们所带来的缺点。例如,在TAO中使用抽象工厂模式的原因是避免策略模式的大量使用所导致的复杂性。尽管策略模式简化了为特定应用需求和网络/终端系统特性定制ORB的工作,人工地管理大量的策略交互仍然是麻烦而易错的。
 
3.3.5 评估模式对ORB中间件的贡献
 
3.3.3描述了TAO中所用的模式语言,并从质量方面评估了这些模式是怎样帮助克服SunSoft IIOP的设计局限的。下面的讨论进一步从质量方面来评估将模式应用于ORB中间件的好处。
 
3.3.5.1 证据何在?
 
使用模式语言实现TAO在软件可复用性和可维护性方面产生了显著的、可以度量的改善。其结果在表3-3中总结。该表比较了TAO和SunSoft IIOP的以下规格:
 
  1. 实现关键ORB任务(比如连接管理、请求传送、Socket和请求多路分离、整编,以及分派)所需的方法数目。
  2. 这些方法的非注释代码行(LOC)的总数。
  3. 方法的McCabe Cyclometric复杂度规格v(G)。v(G)规格使用图形原理来使代码复杂度与代码模块中可使用的基本路径的数目相关联。在C++中,模块被定义为方法。
 
在TAO中,模式使用显著地减少了专用代码的数量和特定操作的复杂度。例如,在客户端连接管理操作中的总代码行缩减了5倍。而且,这一组件的复杂度实质上缩减了16倍。LOC和复杂度的缩减源于以下因素:
 
  • 这些ORB任务是我们在开发TAO时的最初工作的焦点。
  • ACE中的模式和组件(特别地,接受器、连接器和反应堆)包含了连接管理和Socket多路分离的许多细节。
 
其他方面没有产生同样多的改善。特别地,GIOP调用任务的大小实际上反而增大了,而且还维持了不变的v(G)。这样的增大有两个原因:
 
  1. 应用于这些情况中的主要模式是包装外观,它通过ACE包装来替换低级系统调用,但并没有分解出公共的策略;以及
  2. SunSoft IIOP没有捕捉所有的错误条件,而TAO做得要更为完整。因此,TAO中的额外代码对于提供更为健壮的ORB来说是必要的。
 
有系统地应用模式确实可以改善复杂软件的可维护性,最有说服力的证据在图3-18中显示。该图演示了TAO中受影响方法的v(G)百分率的分布。如图中所示,大多数TAO的代码都以简单的方式被构造,大约70%的方法的v(G)落入了范围1-5中。
 
 
图3-18 ORB方法的v(G)分布
 
相反,在SunSoft IIOP的方法有相当的百分率(55%)在该范围中的同时,剩下的许多方法(29%)有着大于10的v(G)。这种差异的原因是SunSoft IIOP使用了整体式的编码风格,有着很长的方法。例如,v(G)大于10的方法的平均长度超过80 LOC。这产生了过于复杂、难以调试和理解的代码。
在TAO中,大多数整体式的SunSoft IIOP方法都在模式集成时被分解为较小的方法。TAO的多数(86%)方法有着10以下的v(G)。在此数目中,大约70%有着1到5之间的v(G)。TAO中相对很少(14%)的v(G)大于10的方法在很大程度上都未作变动地来自于原来的SunSoft IIOP TypeCode解释器。TAO后来的版本已经完全移去了TypeCode解释器,并用由TAO的IDL编译器自动生成的Stub和Skeleton来作了替换。因而,TAO ORB开发者再也不需要维护这些代码了。
一般而言,SunSoft IIOP中整体式方法的使用不仅增加了它的维护工作,而且还降低了它的性能,因为处理器缓存的命中率减少了[20],。因此,我们计划试验其他模式的应用,比如命令与模板方法(Command and Template Method)[15],以将这些整体式方法简化和优化成较小的、更内聚的方法。
 
3.3.5.2 有何好处?
 
总之,将模式语言应用于TAO产生了下列好处:
 
更高的可扩展性:通过允许可扩展性被“设计进”ORB,像抽象工厂、策略和组件配置器这样的模式简化了特定的应用领域中TAO的配置。相反,缺乏这些模式的DOC中间件相当地难以扩展。
 
增强的设计清晰性:通过将模式语言应用于TAO,我们不仅开发了更为可扩展的ORB,还为表达ORB中间件设计发明了更丰富的词汇表。特别地,模式语言捕捉并清晰地表达了ORB中的复杂对象结构的设计原理。而且,通过依照在许多类型的软件系统中重复出现的设计需求来描述ORB的体系结构,它还有助于阐明ORB的结构,并揭示其动机。模式的富有表现力的能力使得我们能够简洁地传达复杂软件系统(比如TAO)的设计。在我们持续地学习ORB及组成它们的模式的同时,我们预期我们的词汇表还将会增长,并演变成一种更为全面的模式语言。
 
增长的可移植性和复用:TAO在ACE构架之上构建,后者提供了许多关键通信软件模式的实现[28]。ACE的使用简化了TAO到多种OS平台的移植,因为ACE维护者承担了大多数移植工作。此外,因为ACE构架富含可配置的高性能、实时、面向网络的组件,我们可以通过有效利用该构架来获得相当可观的代码复用。表3所示的代码行(LOC)的稳固下降表明了这一点。
 
3.3.5.3 有何缺点?
 
模式语言的使用也可能会带来一些缺点。我们在下面总结这些缺点,并讨论我们怎样来在TAO中使它们最小化。
 
抽象代价:许多模式使用间接(indirection)来增加组件耦合。例如,反应堆模式使用虚方法来分离应用特有的Event Handler逻辑与通用的事件多路分离和分派逻辑。使用这些模式实现所带来的额外的间接可能会潜在地降低性能。为减少这些缺点,我们小心地应用了C++编程语言特性(比如内联函数和模板)以及其他优化(比如消除去整编开销[20]和多路分离开销[36])来最小化性能开销。作为结果,TAO比原来的硬编码SunSoft IIOP[20]要快很多。
 
额外的外部依赖:在SunSoft IIOP仅依赖系统级接口和库的同时,TAO依赖于ACE中的包装外观。因为ACE封装了广泛的低级OS机制,将它移植到新平台所需的工作可能会高于移植仅使用了OS API的子集的SunSoft IIOP。但是,因为ACE已经被移植到许多平台,移植到新平台的工作相对就少了。大多数平台变化源已被隔离到ACE中的少数模块中。
 
3.4 结束语
 
本论文介绍了一项个案研究,演示我们怎样将模式语言应用于增强TAO的可扩展性;TAO是一种可动态配置的ORB,它的应用目标是有高性能和实时需求的分布式应用。我们发现了质量和数量的证据,证明模式语言的使用有助于阐明执行关键ORB任务的组件的结构、以及它们之间的协作。这些任务包括事件多路分离和事件处理器分派、连接建立和应用服务初始化、并发控制,以及动态配置。此外,通过使用于处理客户请求的轻量级的和优化的策略的透明配置成为可能,模式还改善了TAO的性能和可预测性。
应用模式语言来指导TAO的设计的主要好处是,该语言中的模式的系统应用显著地促进了ORB的去耦合和面向对象结构。我们所用的模式被应用的次序大致与它们在3.3.3出现的次序相同。TAO的每次改进都有效地利用了前面的改进的结果。这样的反复过程揭示了新的洞见:可应用模式语言中的哪些模式、以及怎样将它们应用于后续阶段。
ACE和TAO完整的C++源码、例子和文档可在http://www.cs.wustl.edu/~schmidt/TAO.html 自由获取。
 
参考文献
 
[1] R. Johnson, “Frameworks = Patterns + Components,” Communications of the ACM, vol. 40, Oct. 1997.
[2] S. Vinoski, “CORBA: Integrating Diverse Applications Within Distributed Heterogeneous Environments,” IEEE Communications Magazine, vol. 14, February 1997.
[3] J. A. Zinky, D. E. Bakken, and R. Schantz, “Architectural Support for Quality of Service for CORBA Objects,” Theory and Practice of Object Systems, vol. 3, no. 1, 1997.
[4] Object Management Group, The Common Object Request Broker: Architecture and Specification, 2.2 ed., Feb. 1998.
[5] D. Box, Essential COM. Addison-Wesley, Reading, MA, 1997.
[6] A. Wollrath, R. Riggs, and J. Waldo, “A Distributed Object Model for the Java System,” USENIX Computing Systems,vol.9,November/ December 1996.
[7] D. C. Schmidt, “Experience Using Design Patterns to Develop Reuseable Object-Oriented Communication Software,” Communications of the ACM (Special Issue on Object-Oriented Experiences), vol. 38, October 1995.
[8] D. C. Schmidt, M. Stal, H. Rohnert, and F. Buschmann, Pattern-Oriented Software Architecture: Patterns for Concurrency and Distributed Objects, Volume 2. New York, NY: Wiley & Sons, 2000.
[9] D. C. Schmidt, “Applying a Pattern Language to Develop Application-level Gateways,” in Design Patterns in Communications (L. Rising, ed.), Cambridge University Press, 2000.
[10] D. C. Schmidt, D. L. Levine, and S. Mungee, “The Design and Performance of Real-Time Object Request Brokers,” Computer Communications, vol. 21, pp. 294–324, Apr. 1998.
[11] T. H. Harrison, D. L. Levine, and D. C. Schmidt, “The Design and Performance of a Real-time CORBA Event Service,” in Proceedings of OOPSLA ’97, (Atlanta, GA), ACM, October 1997.
[12] S. Mungee, N. Surendran, and D. C. Schmidt, “The Design and Performance of a CORBA Audio/Video Streaming Service,” in Proceedings of the Hawaiian International Conference on System Sciences, Jan. 1999.
[13] C. O’Ryan, D. C. Schmidt, and D. Levine, “Applying a Scalable CORBA Events Service to Large-scale Distributed Interactive Simulations,” in Proceedings of the 5th Workshop on Object-oriented Real-time Dependable Systems, (Montery, CA), IEEE, Nov. 1999.
[14] Object Management Group, The Common Object Request Broker: Architecture and Specification, 2.3 ed., June 1999.
[15] E. Gamma, R. Helm, R. Johnson, and J. Vlissides, Design Patterns: Elements of Reusable Object-Oriented Software. Reading, MA: Addison-Wesley, 1995.
[16] C. O’Ryan, F. Kuhns, D. C. Schmidt, and J. Parsons, “Applying Patterns to Develop a Pluggable Protocols Framework for ORB Middleware,” in Design Patterns in Communications (L. Rising, ed.), Cambridge University Press, 2000.
[17] E. Eide, K. Frei, B. Ford, J. Lepreau, and G. Lindstrom, “Flick: A Flexible, Optimizing IDL Compiler,” in Proceedings of ACM SIGPLAN ’97 Conference on Programming Language Design and Implementation (PLDI), (Las Vegas, NV), ACM, June 1997.
[18] M. Henning, “Binding, Migration, and Scalability in CORBA,” Communications of the ACM special issue on CORBA, vol. 41, Oct. 1998.
[19] Object Management Group, Realtime CORBA Joint Revised Submission, OMG Document orbos/99-02-12 ed., March 1999.
[20] A. Gokhale and D. C. Schmidt, “Optimizing a CORBA IIOP Protocol Engine for Minimal Footprint Multimedia Systems,” Journal on Selected Areas in Communications special issue on Service Enabling Platforms for Networked Multimedia Systems, vol. 17, Sept. 1999.
[21] D. C. Schmidt, “GPERF: A Perfect Hash Function Generator,” in Proceedings of the 2nd C++ Conference, (San Francisco, California), pp. 87–102, USENIX, April 1990.
[22] I. Pyarali, C. O’Ryan, D. C. Schmidt, N. Wang, V. Kachroo, and A. Gokhale, “Using Principle Patterns to Optimize Real-time ORBs,” Concurrency Magazine, vol. 8, no. 1, 2000.
[23] C. D. Gill, D. L. Levine, and D. C. Schmidt, “The Design and Performance of a Real-Time CORBA Scheduling Service,” The International Journal of Time-Critical Computing Systems, special issue on Real-Time Middleware, to appear 2000.
[24] D. C. Schmidt, S. Mungee, S. Flores-Gaitan, and A. Gokhale, “Software Architectures for Reducing Priority Inversion and Non-determinism in Real-time Object Request Brokers,” Journal of Real-time Systems, special issue on Real-time Computing in the Age of the Web and the Internet, To appear 2000.
[25] C. O’Ryan, F. Kuhns, D. C. Schmidt, O. Othman, and J. Parsons, “The Design and Performance of a Pluggable Protocols Framework for Real-time Distributed Object Computing Middleware,” in Proceedings of the Middleware 2000 Conference, ACM/IFIP, Apr. 2000.
[26] F. Kuhns, D. C. Schmidt, C. O’Ryan, and D. Levine, “Supporting High-performance I/O in QoS-enabled ORB Middleware,” Cluster Computing: the Journal on Networks, Software, and Applications, 2000.
[27] Z. D. Dittia, G. M. Parulkar, and J. R. Cox, Jr., “The APIC Approach to High Performance Network Interface Design: Protected DMA and Other Techniques,” in Proceedings of INFOCOM ’97, (Kobe, Japan), pp. 179–187, IEEE, April 1997.
[28] D. C. Schmidt, “Applying Design Patterns and Frameworks to Develop Object-Oriented Communication Software,” in Handbook of Programming Languages (P. Salus, ed.), MacMillan Computer Publishing, 1997.
[29] A. B. Arulanthu, C. O’Ryan, D. C. Schmidt, M. Kircher, and J. Parsons, “The Design and Performance of a Scalable ORB Architecture for CORBA Asynchronous Messaging,” in Proceedings of the Middleware 2000 Conference, ACM/IFIP, Apr. 2000.
[30] C. O’Ryan, D. C. Schmidt, F. Kuhns, M. Spivak, J. Parsons, I. Pyarali, and D. Levine, “Evaluating Policies and Mechanisms for Supporting Embedded, Real-Time Applications with CORBA 3.0,” in Proceedings of the 6th IEEE Real-Time Technology and Applications Symposium, (Washington DC), IEEE, May 2000.
[31] B. Natarajan, A. Gokhale, D. C. Schmidt, and S. Yajnik, “DOORS: Towards High-performance Fault-Tolerant CORBA,” in Proceedings of the 2nd International Symposium on Distributed Objects and Applications (DOA 2000), (Antwerp, Belgium), OMG, Sept. 2000.
[32] B. Natarajan, A. Gokhale, D. C. Schmidt, and S. Yajnik, “Applying Patterns to Improve the Performance of Fault-Tolerant CORBA,” in Proceedings of the 7th International Conference on High Performance Computing (HiPC 2000), (Bangalore, India), ACM/IEEE, Dec. 2000.
[33] J. Hu, S. Mungee, and D. C. Schmidt, “Principles for Developing and Measuring High-performance Web Servers over ATM,” in Proceeedings of INFOCOM ’98, March/April 1998.
[34] F. Kon, M. Roman, P. Liu, J. Mao, T. Yamane, L. Magalhaes, and R. Campbell, “Monitoring, Security, and Dynamic Configuration with the dynamicTAO Reflective ORB,” in Proceedings of the Middleware 2000 Conference, ACM/IFIP, Apr. 2000.
[35] M. Roman, M. D. Mickunas, F. Kon, and R. Campbell, “LegORB and Ubiquitous CORBA,” in Reflective Middleware Workshop,ACM/IFIP, Apr. 2000.
[36] A. Gokhale and D. C. Schmidt, “Measuring and Optimizing CORBA Latency and Scalability Over High-speed Networks,” Transactions on Computing, vol. 47, no. 4, 1998.
[37] J. Hu and D. C. Schmidt, “JAWS: A Framework for High Performance Web Servers,” i n Domain-Specific Application Frameworks: Frameworks Experience by Industry (M. Fayad and R. Johnson, eds.), Wiley & Sons, 1999.
[38] Object Management Group, OMG Real-time Request for Proposal, OMG Document ptc/97-06-20 ed., June 1997.
[39] IEEE, Threads Extension for Portable Operating Systems (Draft 10), February 1996.
[40] D. C. Schmidt, S. Mungee, S. Flores-Gaitan, and A. Gokhale, “Alleviating Priority Inversion and Non-determinism in Real-time CORBA ORB Core Architectures,” in Proceedings of the 4th IEEE Real-Time Technology and Applications Symposium, (Denver, CO), IEEE, June 1998.
[41] I. Pyarali, T. H. Harrison, and D. C. Schmidt, “Design and Performance of an Object-Oriented Framework for High-Performance Electronic Medical Imaging,” USENIX Computing Systems,vol.9,November/ December 1996.
[42] R. Gingell, M. Lee, X. Dang, and M. Weeks, “Shared Libraries in SunOS,” in Proceedings of the Summer 1987 USENIX Technical Conferenc, e, (Phoenix, Arizona), 1987.
[43] D. A. Solomon, Inside Windows NT, 2nd Ed. Redmond, Washington: Microsoft Press, 2nd ed., 1998.
[44] T. J. McCabe, “A Complexity Measure,” IEEE Transactions on Software Engineering, vol. SE-2, Dec. 1976.
 
 
33/3<123

最新评论

删除 引用 SkyThinker   post at 2008-7-11 13:14:37
good

查看全部评论……(共1条)

 

评分:0

我来说两句

seccode

最新更新