Nothing Special   »   [go: up one dir, main page]

skip to main content
research-article

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

Published: 17 October 2010 Publication History

Abstract

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.

References

[1]
}}Apache Cassandra Project. http://cassandra.apache.org.
[2]
}}Y. Aridor, M. Factor, and A. Teperman. cJVM: A single system image of a JVM on a cluster. In ICPP, 1999.
[3]
}}J. Armstrong. Erlang -- a survey of the language and its industrial applications. In 9th ESIAP, 1996.
[4]
}}J. Armstrong, R. Virding, C. Wikstrom, and M. Williams. Concurrent Programming in Erlang. Prentice-Hall, 1996.
[5]
}}G. Back, P. Tullmann, L. Stoller,W. C. Hsieh, and J. Lepreau. Java operating systems: Design and implementation. Technical report, Univ. of Utah, 1998.
[6]
}}G. Back, W. C. Hsieh, and J. Lepreau. Processes in KaffeOS: Isolation, resource management, and sharing in Java. In OSDI, 2000.
[7]
}}B. N. Bershad, T. E. Anderson, E. D. Lazowska, and H. M. Levy. Lightweight remote procedure call. ACM Trans. Comput. Syst., 8(1), 1990.
[8]
}}B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczynski, D. Becker, C. Chambers, and S. J. Eggers. Extensibility, safety and performance in the SPIN operating system. In SOSP, 1995.
[9]
}}H.-J. Boehm and S. V. Adve. Foundations of the C++ concurrency memory model. In PLDI, 2008.
[10]
}}X. Chen and V. H. Allan. MultiJav: A distributed shared memory system based on multiple Java virtual machines. In PDPTA, 1998.
[11]
}}N. Chohan, C. Bunch, S. Pang, C. Krintz, N. Mostafa, S. Soman, and R. Wolski. AppScale: Scalable and Open AppEngine Application Development and Deployment. In ICCC, 2009.
[12]
}}Computer Language Benchmarks Game. Language Performance Comparisons. http://shootout.alioth.debian.org/.
[13]
}}CORBA Specification. http://www.omg.org.
[14]
}}D. E. Culler, A. C. Arpaci-Dusseau, S. C. Goldstein, A. Krishnamurthy, S. Lumetta, T. von Eicken, and K. A. Yelick. Parallel programming in Split-C. In SC, 1993.
[15]
}}G. Czajkowski and L. Daynes. Multitasking without compromise: A virtual machine evolution. In OOPSLA, 2001.
[16]
}}D. Doligez and G. Gonthier. Portable, unobtrusive garbage collection for multiprocessor systems. In POPL, 1994.
[17]
}}D. Doligez and X. Leroy. A concurrent, generational garbage collector for a multithreaded implementation of ml. In POPL, 1993.
[18]
}}T. Domani, E. K. Kolodner, and E. Petrank. A generational on-the-fly garbage collector for Java. SIGPLAN Not., 35(5), 2000.
[19]
}}T. Domani, E. K. Kolodner, E. Lewis, E. E. Salant, K. Barabash, I. Lahan, Y. Levanoni, E. Petrank, and I. Yanorer. Implementing an on-the-fly garbage collector for Java. SIGPLAN Not., 36(1), 2001.
[20]
}}S. Dorward, R. Pike, D. L. Presotto, D. Ritchie, H. Trickey, and P. Winterbottom. Inferno. In COMPCON, 1997.
[21]
}}T. El-Ghazawi, W. Carlson, and J. Draper. UPC Language Specifications V, 2001. http://upc.gwu.edu.
[22]
}}M. Fahndrich, M. Aiken, C. Hawblitzel, O. Hodson, G. C. Hunt, J. R. Larus, and S. Levi. Language support for fast and reliable message-based communication in Singularity OS. In EuroSys, 2006.
[23]
}}R. T. Fielding. Architectural styles and the design of network-based software architectures. Technical report, Univ. of California, Irvine, 2000.
[24]
}}GCJ. The GNU Compiler for the Java Programming Language. http://gcc.gnu.org/java.
[25]
}}M. Golm, M. Felser, C. Wawersich, and J. Kleinoder. The JX operating system. In USENIX Annual Technical Conference, 2002.
[26]
}}Hadoop File System (HDFS). http://hadoop.apache.org.
[27]
}}G. C. Hunt and J. R. Larus. Singularity: Rethinking the software stack. Operating Systems Review, 41(2):37--49, 2007.
[28]
}}JavaOS : A Standalone Java Environment. Sun Microsystems, 1996.
[29]
}}JNode. http://www.jnode.org.
[30]
}}M. J. M. Ma, C.-L. Wang, and F. C. M. Lau. JESSICA: Java-enabled single-system-image computing architecture. J. Parallel Distrib. Comput., 60(10), 2000.
[31]
}}Occam Programming Manual. 1984. Inmos Corporation.
[32]
}}Protocol Buffers. Google's Data Interchange Format. http://code.google.com/p/protobuf.
[33]
}}K. Russell and D. Detlefs. Eliminating synchronizationrelated atomic operations with biased locking and bulk rebiasing. SIGPLAN Not., 41(10), 2006.
[34]
}}F. B. Schneider, G. Morrisett, and R. Harper. A languagebased approach to security. Lecture Notes in CS, 2001.
[35]
}}M. Slee, A. Agarwal, and M. Kwiatkowski. Thrift: Scalable Cross-Language Services Implementation. 2007.
[36]
}}T. von Eicken, C.-C. Chang, G. Czajkowski, C. Hawblitzel, D. Hu, and D. Spoonhower. J-Kernel: A capability-based operating system for Java. In Secure Internet Programming, 1999.
[37]
}}M. Wegiel and C. Krintz. XMem: Type-Safe, Transparent, Shared Memory for Cross-Runtime Communication and Coordination. In PLDI, 2008.
[38]
}}N. Wirth and J. Gutknecht. Project Oberon: the design of an operating system and compiler. ACM Press/Addison-Wesley, 1992.

Cited By

View all
  • (2023)Practical Runtime Instrumentation of Software Languages: The Case of SciHookProceedings of the 16th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3623476.3623531(226-231)Online publication date: 23-Oct-2023
  • (2023)Accelerating Multilingual Applications with In-memory Array Sharing2023 IEEE International Conference on Big Data (BigData)10.1109/BigData59044.2023.10386462(255-262)Online publication date: 15-Dec-2023
  • (2022)Preserving Addressability Upon GC-Triggered Data Movements on Non-Volatile MemoryACM Transactions on Architecture and Code Optimization10.1145/351170619:2(1-26)Online publication date: 24-Mar-2022
  • Show More Cited By

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM SIGPLAN Notices
ACM SIGPLAN Notices  Volume 45, Issue 10
OOPSLA '10
October 2010
957 pages
ISSN:0362-1340
EISSN:1558-1160
DOI:10.1145/1932682
Issue’s Table of Contents
  • cover image ACM Conferences
    OOPSLA '10: Proceedings of the ACM international conference on Object oriented programming systems languages and applications
    October 2010
    984 pages
    ISBN:9781450302036
    DOI:10.1145/1869459
Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than ACM must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected]

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 17 October 2010
Published in SIGPLAN Volume 45, Issue 10

Check for updates

Author Tags

  1. collection
  2. communication
  3. cross-language
  4. garbage
  5. managed
  6. memory
  7. model
  8. object
  9. rpc
  10. runtimes
  11. shared
  12. synchronization
  13. transparent
  14. type-safe

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)16
  • Downloads (Last 6 weeks)1
Reflects downloads up to 21 Nov 2024

Other Metrics

Citations

Cited By

View all
  • (2023)Practical Runtime Instrumentation of Software Languages: The Case of SciHookProceedings of the 16th ACM SIGPLAN International Conference on Software Language Engineering10.1145/3623476.3623531(226-231)Online publication date: 23-Oct-2023
  • (2023)Accelerating Multilingual Applications with In-memory Array Sharing2023 IEEE International Conference on Big Data (BigData)10.1109/BigData59044.2023.10386462(255-262)Online publication date: 15-Dec-2023
  • (2022)Preserving Addressability Upon GC-Triggered Data Movements on Non-Volatile MemoryACM Transactions on Architecture and Code Optimization10.1145/351170619:2(1-26)Online publication date: 24-Mar-2022
  • (2021)UniHeapProceedings of the 14th ACM International Conference on Systems and Storage10.1145/3456727.3463775(1-12)Online publication date: 14-Jun-2021
  • (2019)Towards seamless interfacing between dynamic languages and native codeProceedings of the 11th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3358504.3361230(38-47)Online publication date: 22-Oct-2019
  • (2018)Cross-Language Interoperability in a Multi-Language RuntimeACM Transactions on Programming Languages and Systems10.1145/320189840:2(1-43)Online publication date: 28-May-2018
  • (2015)High-performance cross-language interoperability in a multi-language runtimeACM SIGPLAN Notices10.1145/2936313.281671451:2(78-90)Online publication date: 21-Oct-2015
  • (2015)High-performance cross-language interoperability in a multi-language runtimeProceedings of the 11th Symposium on Dynamic Languages10.1145/2816707.2816714(78-90)Online publication date: 21-Oct-2015
  • (2014)Ethos' Deeply Integrated Distributed TypesProceedings of the 2014 IEEE Security and Privacy Workshops10.1109/SPW.2014.32(167-180)Online publication date: 17-May-2014
  • (2013)Analyzing memory ownership patterns in C librariesACM SIGPLAN Notices10.1145/2555670.246416248:11(97-108)Online publication date: 20-Jun-2013
  • Show More Cited By

View Options

Login options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media