Cross-language, type-safe, and transparent object sharing for co-located managed runtimes

Cross-language, type-safe, and transparent object sharing for co-located managed runtimes
复制标题

共置托管运行时的跨语言、类型安全和透明的对象共享

DOI:
--
复制
发表时间:
2010
期刊:
Conference on Object-Oriented Programming Systems, Languages, and Applications
影响因子:
--
通讯作者:
C. Krintz
C. Krintz
中科院分区:
--
文献类型:
--
作者:
Michal Wegiel;C. Krintz

文献摘要

被引文献

相似文献

随着软件变得越来越复杂和难以分析,开发人员越来越普遍地使用高级、类型安全、面向对象(OO)的编程语言,并构建包含多个组件的系统。不同的组件通常用不同的编程语言实现。在最先进的多组件、多语言系统中,跨组件通信依赖于远程过程调用(RPC)和消息传递。随着组件越来越多地位于同一物理机器上以确保多核系统的高利用率,使用共享内存进行跨语言跨运行时通信的潜力越来越大。我们提出了设计和实现的Co-Located共享内存(CoLoRS),一个系统,使跨语言,跨运行时类型安全,透明的共享内存。CoLoRS为静态和动态语言的共同定位的OO运行时提供对象共享。CoLoRS定义了一个语言中立的对象/类模型,它是一个静态-动态的混合体,在保持静态模型的空间/时间效率的同时支持类进化。CoLoRS使用类型映射和类版本控制来透明地将共享类型映射到私有类型。CoLoRS还提供了一个同步机制和一个并行的、并发的、动态的GC算法,这两个算法都旨在促进跨语言、跨运行时的对象共享。我们在Python和Java的开源、生产质量运行时中实现了CoLoRS。我们的经验评估表明,CoLoRS扩展强加低开销。我们还调查了RPC在CoLoRS上,发现使用共享内存来实现协同定位的RPC显着提高了通信吞吐量和延迟,避免数据结构序列化。
As software becomes increasingly complex and difficult to analyze, it is more and more common for developers to use high-level, type-safe, object-oriented (OO) programming languages and to architect systems that comprise multiple components. Different components are often implemented in different programming languages. In state-of-the-art multicomponent, multi-language systems, cross-component communication relies on remote procedure calls (RPC) and message passing. As components are increasingly co-located on the same physical machine to ensure high utilization of multi-core systems, there is a growing potential for using shared memory for cross-language cross-runtime communication. We present the design and implementation of Co-Located Runtime Sharing (CoLoRS), a system that enables cross-language, cross-runtime type-safe, transparent shared memory. CoLoRS provides object sharing for co-located OO runtimes for both static and dynamic languages. CoLoRS defines a language-neutral object/classmodel,which is a static-dynamic hybrid and enables class evolution while maintaining the space/time efficiency of a static model. CoLoRS uses type mapping and class versioning to transparently map shared types to private types. CoLoRS also contributes a synchronization mechanism and a parallel, concurrent, on-the-fly GC algorithm, both designed to facilitate cross-language cross-runtime object sharing. We implement CoLoRS in open-source, production-quality runtimes for Python and Java. Our empirical evaluation shows that CoLoRS extensions impose low overhead. We also investigate RPC over CoLoRS and find that using shared memory to implement co-located RPC significantly improves both communication throughput and latency by avoiding data structure serialization.