skip to main content
research-article

Ribbons: a partially shared memory programming model

Published:22 October 2011Publication History
Skip Abstract Section

Abstract

The need for programs to execute subcomponents in isolation from each other or with lower privileges is prevalent among today's systems. We introduce ribbons: a shared memory programming model that allows for more implicit sharing of memory than processes but is more restrictive than threads. Ribbons structure the heap into protection domains. Privileges between these protection domains are carefully controlled in order to confine computation. We propose RibbonJ, a backwards-compatible extension of Java, to easily create or port programs to use the ribbons model. We study the progress and isolation properties of a subset of the language. Building on JikesRVM we implement ribbons by leveraging existing memory protection mechanisms in modern hardware and operating systems, avoiding the overhead of inline security checks and read or write barriers. We evaluate efficiency via microbenchmarks and the DaCapo suite, observing minor overhead. Additionally, we refactor Apache Tomcat to use ribbons for application isolation, discuss the refactoring's design and complexity, and evaluate performance using the SPECweb2009 benchmark.

References

  1. M. Aiken, F. Fahndrich, C. Hawblitzel, G. Hunt, and J. Larus. Deconstructing Process Isolation. In MSPC'06, pages 1--10, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. B. Alpern, S. Augart, S. M. Blackburn, M. Butrico, A. Cocchi, P. Cheng, J. Dolby, S. Fink, D. Grove, M. Hind, K. S. McKinley, M. Mergen, J. E. B. Moss, T. Ngo, and V. Sarkar. The Jikes Research Virtual Machine Project: Building an Open-source Research Community. IBM Systems Journal, 44(2):399--417, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  3. C. Andreae, Y. Coady, C. Gibbs, J. Noble, J. Vitek, and T. Zhao. Scoped Types and Aspects for Real-Time Java. In ECOOP'06, pages 124--147, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. B. N. Bershad, S. Savage, P. Pardyak, E. G. Sirer, M. E. Fiuczynski, D. Becker, C. Chambers, and S. Eggers. Extensibility Safety and Performance in the SPIN Operating System. SIGOPS OSR, 29(5):267--283, 1995. Google ScholarGoogle ScholarDigital LibraryDigital Library
  5. S. M. Blackburn, R. Garner, C. Hoffmann, A. M. Khang, K. S. McKinley, R. Bentzur, A. Diwan, D. Feinberg, D. Frampton, S. Z. Guyer, M. Hirzel, A. Hosking, M. Jump, H. Lee, J. E. B. Moss, B. Moss, A. Phansalkar, D. Stefanović, T. VanDrunen, D. von Dincklage, and B. Wiedermann. The DaCapo Benchmarks: Java Benchmarking Development and Analysis. In OOPSLA'06, pages 169--190, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. C. Boyapati, R. Lee, and M. C. Rinard. Ownership Types for Safe Programming: Preventing Data Races and Deadlocks. In OOPSLA'02, pages 211--230, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  7. C. Boyapati, A. Salcianu, W. S. Beebee, and M. C. Rinard. Ownership Types for Safe Region-based Memory Management in Real-time Java. In PLDI'03, pages 324--337, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. J. S. Chase, H. M. Levy, M. J. Feeley, and E. D. Lazowska. Sharing and Protection in a Single-address-space Operating System. ACM TOCS, 12(4):271--307, 1994. Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. S. Chen, D. Ross, and Y.-M. Wang. An Analysis of Browser Domain-isolation Bugs and a Light-weight Transparent Defense Mechanism. In CCS'07, pages 2--11, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  10. Y. Chiba. Heap Protection for Java Virtual Machines. In PPPJ'06, pages 103--112, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  11. T. Chiueh, G. Venkitachalam, and P. Pradhan. Integrating Segmentation and Paging Protection for Safe, Efficient and Transparent Software Extensions. In SOSP'99, pages 140--153, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. D. G. Clarke, J. Potter, and J. Noble. Ownership Types for Flexible Alias Protection. In OOPSLA'98, pages 48--64, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. E. Cohen and D. Jefferson. Protection in the Hydra Operating System. In SOSP'75, pages 141--160, 1975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  14. G. Czajkowski, L. Daynès, and B. Titzer. A Multi-user Virtual Machine. In USENIX ATC'03, pages 7--7, 2003. Google ScholarGoogle ScholarDigital LibraryDigital Library
  15. P. Dasgupta, J. Richard J. LeBlanc, M. Ahamad, and U. Ramachandran. The Clouds Distributed Operating System. IEEE Computer, 24(11):34--44, 1991. Google ScholarGoogle ScholarDigital LibraryDigital Library
  16. D. Dean, E. W. Felten, and D. S. Wallach. Java Security: from HotJava to Netscape and Beyond. In SP'96, pages 190--200, 1996. Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. A. Dearle and D. Hulse. Operating System Support for Persistent Systems: Past, Present and Future. Software--Practice & Experience, 30(4):295--324, 2000. Google ScholarGoogle ScholarDigital LibraryDigital Library
  18. J. Devietti, C. Blundell, M. Martin, and S. Zdancewic. Hardbound: Architectural Support for Spatial Safety of the C Programming Language. In ASPLOS'08, pages 103--114, 2008. Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. T. Ekman and G. Hedin. The JastAdd Extensible Java Compiler. In OOPSLA'07, pages 1--18, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. U. Erlingsson, M. Abadi, M. Vrable, M. Budiu, and G. Necula. XFI: Software Guards for System Address Spaces. In OSDI'06, pages 6--6, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. M. Flatt and R. Findler. Kill-safe Synchronization Abstractions. In PLDI'04, pages 47--58, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  22. M. Flatt, S. Krishnamurthi, and M. Felleisen. Classes and Mixins. In POPL'98, pages 171--183, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  23. D. Grossman, J. G. Morrisett, T. Jim, M. W. Hicks, Y. Wang, and J. Cheney. Region-Based Memory Management in Cyclone. In PLDI'02, 2002. Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. J. J. Heiss. The Multi-Tasking Virtual Machine: Building a Highly Scalable JVM. Java Developers Forum, March 2005.Google ScholarGoogle Scholar
  25. K. Hoffman. http://kevinjhoffman.com/ribbons/, 2011.Google ScholarGoogle Scholar
  26. A. Igarashi, B. C. Pierce, and P. Wadler. Featherweight Java: a Minimal Core Calculus for Java and GJ. ACM TOPLAS, 23(3):396--450, 2001. Google ScholarGoogle ScholarDigital LibraryDigital Library
  27. F. Qin, S. Lu, and Y. Zhou. SafeMem: Exploiting ECC-Memory for Detecting Memory Leaks and Memory Corruption During Production Runs. In HPCA'05, pages 291--302, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. S. Rajunas, N. Hardy, A. Bomberger, W. Frantz, and C. Landau. Security In KeyKOS. In SP'86, 0:78, 1986.Google ScholarGoogle Scholar
  29. M. Rinard, C. Cadar, D. Dumitran, D. Roy, T. Leu, and W. B. Jr. Enhancing Server Availability and Security Through Failure-Oblivious Computing. In OSDI'04, pages 21--21, 2004. Google ScholarGoogle ScholarDigital LibraryDigital Library
  30. J. Rosenberg. The MONADS Architecture: A Layered View. In POS'90, pages 215--225, 1990.Google ScholarGoogle Scholar
  31. R. Shetty, M. Kharbutli, Y. Solihin, and M. Prvulovic. HeapMon: A Helper-thread Approach to Programmable, Automatic, and Low-overhead Memory Bug Detection. IBM Journal of Research and Development, 50(2/3), 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. W. Shi, J. Fryman, G. Gu, H.-H. Lee, Y. Zhang, and J. Yang. InfoShield: a Security Architecture for Protecting Information Usage in Memory. In HPCA'06, pages 222--231, 2006.Google ScholarGoogle Scholar
  33. M. Swift, B. Bershad, and H. Levy. Improving the Reliability of Commodity Operating Systems. ACM TOCS, 23(1):77--110, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  34. M. Takahashi, K. Kono, and T. Masuda. Efficient Kernel Support of Fine-Grained Protection Domains for Mobile Code. In ICDCS'99, page 64, 1999. Google ScholarGoogle ScholarDigital LibraryDigital Library
  35. M. Tofte and L. Birkedal. A Region Inference Algorithm. ACM TOPLAS, 20(4):724--767, 1998. Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. G. Venkataramani, B. Roemer, Y. Solihin, and M. Prvulovic. MemTracker: Efficient and Programmable Support for Memory Access Monitoring and Debugging. In HPCA'07, pages 273--284, 2007. Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. R. Wahbe, S. Lucco, T. E. Anderson, and S. L. Graham. Efficient Software-based Fault Isolation. SIGOPS OSR, 27(5):203--216, 1993. Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. A. Wiggins, S. Winwood, H. Tuch, and G. Heiser. Legba: Fast Hardware Support for Fine-Grained Protection. In ACSAC'03, pages 320--336, 2003.Google ScholarGoogle Scholar
  39. E. Witchel, J. Rhee, and K. Asanovic. Mondrix: Memory Isolation for Linux Using Mondriaan Memory Protection. In SOSP'05, pages 31--44, 2005. Google ScholarGoogle ScholarDigital LibraryDigital Library
  40. K. Zhang, T. Zhang, and S. Pande. Memory Protection through Dynamic Access Control. In MICRO'06, pages 123--134, 2006. Google ScholarGoogle ScholarDigital LibraryDigital Library

Index Terms

  1. Ribbons: a partially shared memory programming model

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        • Published in

          cover image ACM SIGPLAN Notices
          ACM SIGPLAN Notices  Volume 46, Issue 10
          OOPSLA '11
          October 2011
          1063 pages
          ISSN:0362-1340
          EISSN:1558-1160
          DOI:10.1145/2076021
          Issue’s Table of Contents
          • cover image ACM Conferences
            OOPSLA '11: Proceedings of the 2011 ACM international conference on Object oriented programming systems languages and applications
            October 2011
            1104 pages
            ISBN:9781450309400
            DOI:10.1145/2048066

          Copyright © 2011 ACM

          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: 22 October 2011

          Check for updates

          Qualifiers

          • research-article

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader