论文部分内容阅读
构件系统的动态更新需要构件间的动态依赖信息来判断构件何时更新才可以保证更新的安全性,而且动态依赖信息越精确,动态更新对系统造成的干扰越小。最近的动态更新技术使用事务运行过程中不断变化的动态依赖实现安全、精细、低干扰的动态更新,然而他们并没有给出获取和管理事务的动态依赖的方法。目前仅有的可以支持事务的动态依赖的管理工作无法同时在精确度、系统开销、自动化程度等方面取得令人满意的效果。为了解决这些不足,本文提出一种通过构建和维护事务的运行时模型来自动管理事务的动态依赖的自动管理框架。基于该框架实现的动态依赖的管理不仅具有较高的精确度而且具有较小的系统开销。具体而言,本文的工作主要包括以下几点:·定义了事务运行过程中的构件间的动态依赖(简称事务的动态依赖),并提出它的一种表示方法,可直接用于动态更新。定义了一个动态依赖Mealy机(DDMM),可以作为事务的运行时模型,用于刻画事务在任一运行时刻的动态依赖。·提出一个通过构建和维护事务的DDMM来自动管理事务的动态依赖的框架。DDMM是在事务运行前直接从事务的实现中构建的。静态构建的DDMM和驱动它运行的触发方法插入到事务的实现中从而使它与事务在运行时保持同步。当事务运行时,DDMM在触发方法的驱动下实例化为事务的运行时模型,并基于此模型估算事务运行时刻的动态依赖信息。·研究了DDMM的优化方法,对DDMM进行最小化,减少插桩的数量,降低给系统的正常运行带来的开销。研究了分支预测的优化方法,对动态依赖产生影响的分支条件进行提前判断,从而提高估算的动态依赖信息的精确度。·基于上述的自动管理框架,实现了一个可以自动管理JaVa构件中的事务的动态依赖的工具DDMT。DDMT对于任意一个支持动态更新的JaVa构件(系统),只需知道其字节码实现,便可在运行时自动获得事务的动态依赖,整个过程全部都是自动完成,无需任何手工操作。·使用DDMT在基准测试程序集Dacapo中的DayTrader应用上进行了实验。实验结果表明,本文方法估算的动态依赖与实际相比具有较高的精确度,并且对系统造成的额外开销也比较小。