Abstract
Shared memory provides the fastest form of inter-process communication. Sharing polymorphic objects between different address spaces requires solving the issue of sharing pointers. In this paper, we propose a method, named Indexed Virtual Tables (IVT for short), to share polymorphic objects efficiently. On object construction, the virtual table pointers are replaced with indexes, which are used to find the actual virtual table pointers on dynamic dispatch. Only a few addition and load instructions are needed for both operations. Experimental results show that the IVT can outperform prior techniques on both object construction time and dynamic dispatch time. We also apply the proposed IVT technique to several practical scenarios, resulting the improvement of overall performance.
Supplemental Material
- David F. Bacon, Stephen J. Fink, and David Grove. 2002. Space- and Time-Efficient Implementation of the Java Object Model. In ECOOP 2002 - Object-Oriented Programming, 16th European Conference, Malaga, Spain, June 10-14, 2002, Proceedings. 111–132. Google Scholar
Cross Ref
- Ryan Berryhill, Wojciech M. Golab, and Mahesh Tripunitara. 2015. Robust Shared Objects for Non-Volatile Main Memory. In 19th International Conference on Principles of Distributed Systems, OPODIS 2015, December 14-17, 2015, Rennes, France. 20:1–20:17. Google Scholar
Cross Ref
- Kumud Bhandari, Dhruva R. Chakrabarti, and Hans-Juergen Boehm. 2016. Makalu: fast recoverable allocation of non-volatile memory. In Proceedings of the 2016 ACM SIGPLAN International Conference on Object-Oriented Programming, Systems, Languages, and Applications, OOPSLA 2016, part of SPLASH 2016, Amsterdam, The Netherlands, October 30 - November 4, 2016. 677–694. Google Scholar
Digital Library
- Boost C++ Libraries. 2018a. Class Template offset_ptr. http://www.boost.org/doc/libs/1_67_0/doc/html/boost/interprocess/ offset_ptr.html .Google Scholar
- Boost C++ Libraries. 2018b. Managed Memory Segments. http://www.boost.org/doc/libs/1_67_0/doc/html/interprocess/ managed_memory_segments.html .Google Scholar
- Boost C++ Libraries. 2018c. Sharing memory between processes. https://www.boost.org/doc/libs/1_67_0/doc/html/ interprocess/sharedmemorybetweenprocesses.html .Google Scholar
- Tim Bray. 2017. The JavaScript Object Notation (JSON) Data Interchange Format. RFC 8259 (2017), 1–16. Google Scholar
Digital Library
- B. Burshteyn. 2014. Method and System for Accessing C++ Objects in Shared Memory.Google Scholar
- Dhruva R. Chakrabarti, Hans-Juergen Boehm, and Kumud Bhandari. 2014. Atlas: leveraging locks for non-volatile memory consistency. In Proceedings of the 2014 ACM International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA 2014, part of SPLASH 2014, Portland, OR, USA, October 20-24, 2014. 433–452. Google Scholar
Digital Library
- Thaleia Dimitra Doudali and Ada Gavrilovska. 2017. CoMerge: toward efficient data placement in shared heterogeneous memory systems. In Proceedings of the International Symposium on Memory Systems, MEMSYS 2017, Alexandria, VA, USA, October 02 - 05, 2017. 251–261. Google Scholar
Digital Library
- Peter Druschel and Larry L. Peterson. 1993. Fbufs: A High-Bandwidth Cross-Domain Transfer Facility. In Proceedings of the Fourteenth ACM Symposium on Operating System Principles, SOSP 1993, The Grove Park Inn and Country Club, Asheville, North Carolina, USA, December 5-8, 1993. 189–202. Google Scholar
Digital Library
- Margaret A. Ellis and Bjarne Stroustrup. 1990. The Annotated C++ Reference Manual. Addison-Wesley.Google Scholar
- Open Source Robotic Foundation. 2018. ROS, Robot operating system. http://www.ros.org/ .Google Scholar
- Brice Goglin and Stéphanie Moreaud. 2013. KNEM: A generic and scalable kernel-assisted intra-node MPI communication framework. J. Parallel Distrib. Comput. 73, 2 (2013), 176–188. Google Scholar
Digital Library
- W. Gropp, E. Lusk, A. Skjellum, and R. Thakur. 1999. Using MPI: Portable Parallel Programming with the Message-passing Interface. MIT Press. https://books.google.ae/books?id=DFT1ngEACAAJGoogle Scholar
- Izzat El Hajj, Thomas B. Jablin, Dejan S. Milojicic, and Wen-Mei W. Hwu. 2017. SAVI objects: sharing and virtuality incorporated. PACMPL 1, OOPSLA (2017), 45:1–45:24. Google Scholar
Digital Library
- Maurice Herlihy and Barbara Liskov. 1982. A Value Transmission Method for Abstract Data Types. ACM Trans. Program. Lang. Syst. 4, 4 (1982), 527–551. Google Scholar
Digital Library
- Lenny Hon. 1994. Using objects in shared memory for C++ application. In Proceedings of the 1994 Conference of the Centre for Advanced Studies on Collaborative Research, October 31 - November 3, 1994, Toronto, Ontario, Canada. 29. Google Scholar
Cross Ref
- Hyun-Wook Jin, Sayantan Sur, Lei Chai, and Dhabaleswar K. Panda. 2005. LiMIC: Support for High-Performance MPI Intra-node Communication on Linux Cluster. In 34th International Conference on Parallel Processing (ICPP 2005), 14-17 June 2005, Oslo, Norway. 184–191. Google Scholar
Digital Library
- Kamran Karimi and Mohsen Sharifi. 2006. Transparent Distributed Programming under Linux. In 20th Annual International Symposium on High Performance Computing Systems and Applications (HPCS 2006), 14-17 May 2006, St. John’s, Newfoundland, Canada. 13. Google Scholar
Digital Library
- Christian Kurmann and Thomas Stricker. 2003. Zero-Copy for CORBA - Efficient Communication for Distributed Object Middleware. In 12th International Symposium on High-Performance Distributed Computing (HPDC-12 2003), 22-24 June 2003, Seattle, WA, USA. 4–13. Google Scholar
Cross Ref
- Chris Lattner and Vikram S. Adve. 2004. LLVM: A Compilation Framework for Lifelong Program Analysis & Transformation. In 2nd IEEE / ACM International Symposium on Code Generation and Optimization (CGO 2004), 20-24 March 2004, San Jose, CA, USA. 75–88. Google Scholar
Cross Ref
- Shen Liu, Gang Tan, and Trent Jaeger. 2017. PtrSplit: Supporting General Pointers in Automatic Program Partitioning. In Proceedings of the 2017 ACM SIGSAC Conference on Computer and Communications Security, CCS 2017, Dallas, TX, USA, October 30 - November 03, 2017. 2359–2371. Google Scholar
Digital Library
- LLVM. 2018. Clang: A C Language Family Frontend for LLVM. http://clang.llvm.org/ .Google Scholar
- S. Magnenat. 2018. ethzasl_message_transport. https://github.com/ethz-asl/ros-message-transport .Google Scholar
- Andrew C. Myers. 1995. Bidirectional Object Layout for Separate Compilation. In OOPSLA’95, Proceedings of the Tenth Annual Conference on Object-Oriented Programming Systems, Languages, and Applications, Austin, Texas, USA, October 15-19, 1995. 124–139. Google Scholar
Digital Library
- OpenCV team. 2018. OpenCV - Official Site. http://opencv.org/ .Google Scholar
- Douglas Otstott, Latchesar Ionkov, Michael Lang, and Ming Zhao. 2017. TCASM: An asynchronous shared memory interface for high-performance application composition. Parallel Comput. 63 (2017), 61–78. Google Scholar
Digital Library
- Qt Documentation. 2018. QSharedMemory Class. http://doc.qt.io/qt-5/qsharedmemory.html .Google Scholar
- M. Quigley, K. Conley, B. P. Gerkey, J. Faust, T. Foote, J. Leibs, R. Wheeler, and A. Y. Ng. 2009. ROS: an open-source Robot Operating System. In ICRA Workshop on Open Source Software.Google Scholar
- Sven Rheindt, Andreas Schenk, Akshay Srivatsa, Thomas Wild, and Andreas Herkersdorf. 2018. CaCAO: Complex and Compositional Atomic Operations for NoC-Based Manycore Platforms. In Architecture of Computing Systems - ARCS 2018 - 31st International Conference, Braunschweig, Germany, April 9-12, 2018, Proceedings. 139–152. Google Scholar
Cross Ref
- David Richie, James Ross, and Jamie Infantolino. 2017. A Distributed Shared Memory Model and C++ Templated MetaProgramming Interface for the Epiphany RISC Array Processor. In International Conference on Computational Science, ICCS 2017, 12-14 June 2017, Zurich, Switzerland. 1093–1102. Google Scholar
Cross Ref
- ROS Wiki. 2018. Nodelet, Robot operating system. http://wiki.ros.org/nodelet .Google Scholar
- Michael Schöttner, Oliver Schirpf, Moritz Wende, and Peter Schulthess. 2000. Multiple Subtyping in a Persistent Distributed Shared Memory Operating System. In Proceedings of the International Conference on Parallel and Distributed Processing Techniques and Applications, PDPTA 2000, June 24-29, 2000, Las Vegas, Nevada, USA.Google Scholar
- W. Richard Stevens. 1992. Advanced Programming in the UNIX Environment. Addison-Wesley.Google Scholar
- M. Sústrik. 2018. ΦMQ: The Theoretical Foundation. http://www.250bpm.com/concepts .Google Scholar
- Andrew S. Tanenbaum. 1995. Distributed operating systems. Prentice Hall.Google Scholar
Digital Library
- The Apache XML Project. 2004. Xalan-C++ version 1.10. http://xml.apache.org/xalan-c/ .Google Scholar
- The Object Management Group. 2018a. About the Data Distribution Service Specification Version 1.4. http://www.omg.org/ spec/DDS/1.4/ .Google Scholar
- The Object Management Group. 2018b. Common Object Request Broker Architecture (CORBA/IIOP), 3.3 edition. http: //www.omg.org/spec/CORBA/3.3/ .Google Scholar
- Frank Tip and Peter F. Sweeney. 1997. Class Hierarchy Specialization. In Proceedings of the 1997 ACM SIGPLAN Conference on Object-Oriented Programming Systems, Languages & Applications (OOPSLA ’97), Atlanta, Georgia, October 5-9, 1997. 271–285. Google Scholar
Digital Library
- K. Varda. 2018. Protocol buffers: Google’s data interchange format. https://opensource.googleblog.com/2008/07/protocolbuffers-googles-data.html .Google Scholar
Index Terms
IVT: an efficient method for sharing subtype polymorphic objects
Recommendations
SAVI objects: sharing and virtuality incorporated
Direct sharing and storing of memory objects allows high-performance and low-overhead collaboration between parallel processes or application workflows with loosely coupled programs. However, sharing of objects is hindered by the inability to use ...
Ideal Secret Sharing Schemes with Share Selectability
Information and Communications SecurityAbstractIn this paper, we investigate a new concept, called share selectable secret sharing, where no unauthorized set can obtain information of the secret (in the information-theoretic sense) even if shares are selectable as arbitrary values which are ...
Image Secret Sharing Construction for General Access Structure with Meaningful Share
This article describes how the (k, n) threshold image secret sharing technology can recover the secret image even n − k shares are lost, or n−k servers do not work, which is useful for cloud storage, etc. Image secret sharing for general access ...






Comments