skip to main content
10.1145/1217935.1217953acmconferencesArticle/Chapter ViewAbstractPublication PageseurosysConference Proceedingsconference-collections
Article

Language support for fast and reliable message-based communication in singularity OS

Published: 18 April 2006 Publication History

Abstract

Message-based communication offers the potential benefits of providing stronger specification and cleaner separation between components. Compared with shared-memory interactions, message passing has the potential disadvantages of more expensive data exchange (no direct sharing) and more complicated programming.In this paper we report on the language, verification, and run-time system features that make messages practical as the sole means of communication between processes in the Singularity operating system. We show that using advanced programming language and verification techniques, it is possible to provide and enforce strong system-wide invariants that enable efficient communication and low-overhead software-based process isolation. Furthermore, specifications on communication channels help in detecting programmer mistakes early---namely at compile-time---thereby reducing the difficulty of the message-based programming model.The paper describes our communication invariants, the language and verification features that support them, as well as implementation details of the infrastructure. A number of benchmarks show the competitiveness of this approach.

References

[1]
Partition III: CIL Instruction Set. ECMA Standard 335 http://www.ecma-international.org/publications/standards/Ecma-335.htm.]]
[2]
Joe Armstrong, Robert Virding, Claes Wikström, and Mike Williams. Concurrent Programming in Erlang. Prentice-Hall, second edition, 1996.]]
[3]
David F. Bacon, Robert E. Strom, and Ashis Tarafdar. Guava: A Dialect of Java without Data Races. In Proceedings of 2000 ACM SIGPLAN Conference on Object-Oriented Programming, Systems, Languages, and Applications (OOPSLA'00), pages 382--400, October 2000.]]
[4]
F. R. M. Barnes, C. L. Jacobsen, and B. Vinter. RMoX: a Raw Metal occam Experiment. In Communicating Process Architectures 2003, WoTUG-26, Concurrent Systems Engineering, ISSN 1383--7575, pages 269--288, September 2003. ISBN: 1-58603-381-6.]]
[5]
F. R. M. Barnes and P. H. Welch. Mobile Data, Dynamic Allocation and Zero Aliasing: an occam Experiment. In Communicating Process Architectures 2001, number 59 in Concurrent Systems Engineering Series, pages 243--264. IOS Press, Amsterdam, The Netherlands, September 2001.]]
[6]
Forest Baskett, John H. Howard, and John T. Montague. Taks communication in DEMOS. In Proceedings of the Sixth ACM Symposium on Operating Systems Principles, pages 23--31, 1977.]]
[7]
Brian N. Bershad, Craig Chambers, Susan Eggers, Chris Maeda, Dylan McNamee, Przemyslaw Pardyak, Stefan Savage, and Emin Gün Sirer. SPIN: An Extensible Microkernel for Application-specific Operating System Services. In Proceedings of the 6th ACM SIGOPS European Workshop, pages 74--77, 1994.]]
[8]
Greg Bollella, James Gosling, Ben Brosgol, Peter Dribble, Steve Furr, and Mark Turnbull. The Real-Time Specification for Java. Addison-Wesley, June 2000.]]
[9]
David G. Clarke, James Noble, and John Potter. Simple Ownership Types for Object Containment. In 15th European Conference on Object-Oriented Programming (ECOOP 2001), volume 2072. Lecture Notes in Computer Science, 2001.]]
[10]
Karl Crary, David Walker, and Greg Morrisett. Typed memory management in a calculus of capabilities. In Conference Record of the 26th Annual A CM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press, January 1999.]]
[11]
Fabien Dagnat and Marc Pantel. Static analysis of communications for Erlang. In Proceedings of 8th International Erlang/OTP User Conference, 2002.]]
[12]
Robert DeLine and Manuel Fähndrich. Enforcing High-Level Protocols in Low-Level Software. In Proceedings of the ACM SIGPLAN 2001 Conference on Programming Language Design and Implementation (PLDI '01), pages 59--69, 2001.]]
[13]
Sean Dorward, Rob Pike, and Phil Winterbottom. Programming in Limbo. In Proceedings of COMPCON. IEEE, 1997.]]
[14]
Robert Ennals, Richard Sharp, and Alan Mycroft. Linear Types for Packet Processing. In European Symposium on Programming, volume 2986 of LNCS, pages 204--218, Jan 2004.]]
[15]
Manuel Fähndrich and Robert DeLine. Adoption and focus: Practical linear types for imperative programming. In Proceedings of the 2002 ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 13--24, June 2002.]]
[16]
Cédric Fournet, Tony Hoare, Sriram K. Rajamani, and Jakob Rehof. Stuck-Free Conformance. In LNCS, volume 3114, pages 242--254, Jan 2004.]]
[17]
Simon Gay, Vasco Vasconcelos, and António Ravara. Session Types for Inter-Process Communication. Technical Report TR-2003-133, Department of Computer Science, University of Glasgow, 2003.]]
[18]
Charles M. Geschke, Jr. James H. Morris, and Edwin H. Satterthwaite. Early Experience with Mesa. Commununications of the ACM, 20(8):540--553, 1977.]]
[19]
Per Brinch Hansen. The SOLO Operating System: A Concurrent Pascal Program. Software-Practice & Experience, 6(2):324--336, 1976.]]
[20]
Hermann Härtig, Michael Hohmuth, Jochen Liedtke, Sebastian Schönberg, and Jean Wolter. The Performance of μ-Kernel-Based Systems. In Proceedings of the 16th ACM Symposium on Operating Systems Principles (SOSP'97), October 1997.]]
[21]
Kohei Honda, Vasco T. Vasconcelos, and Makoto Kubo. Language Primitives and Type Discipline for Structured Communication-Based Programming. In European Symposium on Programming, ESOP'98, volume 1381 of LNSC, Jan 1998.]]
[22]
Galen Hunt, James Larus, Martín Abadi, Mark Aiken, Paul Barham, Manuel Fähndrich, Chris Hawblitzel, Orion Hodson, Steven Levi, Nick Murphy, Bjarne Steensgaard, David Tarditi, Ted Wobber, and Brian Zill. An Overview of the Singularity Project. Technical Report MSR-TR-2005-135, Microsoft Research, 2005.]]
[23]
Galen C. Hunt, James R. Larus, David Tarditi, and Ted Wobber. Broad New OS Research: Challenges and Opportunities. In Proceedings of Tenth Workshop on Hot Topics in Operating Systems. USENIX, June 2005.]]
[24]
A. Igarashi and N. Kobayashi. A generic type system for the Pi-calculus. In POPL 01: Principles of Programming Languages, pages 128--141, 2001.]]
[25]
Trevor Jim, Gregory Morrisett, Dan Grossman, Michael Hicks, James Cheney, and Yanling Wang. Cyclone: A Safe Dialect of C. In Proceedings of the USENIX 2002 Annual Conference, pages 275--288, 2002.]]
[26]
Geraint Jones and Michael Goldsmith. Programming in occam 2. Web edition, 2001. http://web.comlab.ox.ac.uk/oucl/work/geraint.jones/-publications/book/Pio2/.]]
[27]
Matthias Neubauer and Peter Thiemann. Session types for asynchronous communication. citeseer.ist.psu.edu/636671.html.]]
[28]
Vivek S. Pai, Peter Druschel, and Willy Zwaenepoel. IO-Lite: A Unified I/O Buffering and Caching System. ACM Transactions on Computer Systems, 18(1):37--66, February 2000.]]
[29]
Robert Pike. The Implementation of Newsqueak. Software-Practice & Experience, 20(7):649--659, 1990.]]
[30]
David D. Redell, Yogen K Dalal, Thomas R. Horsley, Hugh C. Lauer, William C. Lynch, Paul R. McJones, Hal G. Murray, and Stephen C. Purcell. Pilot: An Operating System for a Personal Computer (summary). Communications of the ACM, 23(2):81--92, 1980.]]
[31]
John H. Reppy. CML: A Higher-Order Concurrent Language. In Proceedings of the ACM SIGPLAN 1991 Conference on Programming Language Design and Implementation, pages 293--305, 1991.]]
[32]
John C. Reynolds. Separation logic: A logic for shared mutable data structures. In 17th IEEE Symposium on Logic in Computer Science (LICS 2002), pages 55--74, 2002.]]
[33]
Konstantinos Sagonas and Jesper Wilhelmsson. Message Analysis-Guided Allocation and Low-Pause Incremental Garbage Collection in a Concurrent Language. In Proceedings of the 4th international symposium on Memory management (ISMM'04), pages 1--12, 2004.]]
[34]
Frederick Smith, David Walker, and J. Gregory Morrisett. Alias Types. In Proceedings of the 9th European Symposium on Programming Languages and Systems, volume 1782 of LNCS, pages 366--381, 2000.]]
[35]
Daniel C. Swinehart, Pollef T. Zellweger, Richard J. Beach, and Robert B. Hagmann. A Structural View of the Cedar Programming Environment. ACM Transactions on Programming Languages and Systems, 8(4):419--490, 1986.]]
[36]
M. Tofte and J.-P. Talpin. Implementation of the typed call-by-value λ-calculus using a stack of regions. In Conference Record of the 21st Annual ACM SSymposium on Principles of Programming Languages, pages 188--201, January 1994.]]
[37]
Tian Zhao, James Noble, and Jan Vitek. Scoped Types for Real-time Java. In 25th IEEE International Real-Time Systems Symposium (RTSS'04), pages 241--251, 2004.]]

Cited By

View all
  • (2023)Dynamic Linkers Are the Narrow Waist of Operating SystemsProceedings of the 12th Workshop on Programming Languages and Operating Systems10.1145/3623759.3624548(26-33)Online publication date: 23-Oct-2023
  • (2023)Going beyond the Limits of SFI: Flexible and Secure Hardware-Assisted In-Process Isolation with HFIProceedings of the 28th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 310.1145/3582016.3582023(266-281)Online publication date: 25-Mar-2023
  • (2023)Minimizing a Smartphone's TCB for Security-Critical Programs with Exclusively-Used, Physically-Isolated, Statically-Partitioned HardwareProceedings of the 21st Annual International Conference on Mobile Systems, Applications and Services10.1145/3581791.3596864(233-246)Online publication date: 18-Jun-2023
  • Show More Cited By

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Conferences
EuroSys '06: Proceedings of the 1st ACM SIGOPS/EuroSys European Conference on Computer Systems 2006
April 2006
420 pages
ISBN:1595933220
DOI:10.1145/1217935
  • cover image ACM SIGOPS Operating Systems Review
    ACM SIGOPS Operating Systems Review  Volume 40, Issue 4
    Proceedings of the 2006 EuroSys conference
    October 2006
    383 pages
    ISSN:0163-5980
    DOI:10.1145/1218063
    Issue’s Table of Contents

Sponsors

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 April 2006

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. asynchronous communication
  2. channels
  3. data ownership
  4. protocols
  5. static checking

Qualifiers

  • Article

Conference

EUROSYS06
Sponsor:
EUROSYS06: Eurosys 2006 Conference
April 18 - 21, 2006
Leuven, Belgium

Acceptance Rates

Overall Acceptance Rate 241 of 1,308 submissions, 18%

Upcoming Conference

EuroSys '25
Twentieth European Conference on Computer Systems
March 30 - April 3, 2025
Rotterdam , Netherlands

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)36
  • Downloads (Last 6 weeks)5
Reflects downloads up to 14 Sep 2024

Other Metrics

Citations

Cited By

View all

View Options

Get Access

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