Singularity: rethinking the software stack

Every operating system embodies a collection of design decisions. Many of the decisions behind today's most popular operating systems have remained unchanged, even as hardware and software have evolved. Operating systems form the foundation of almost every software stack, so inadequacies in present systems have a pervasive impact. This paper describes the efforts of the Singularity project to re-examine these design choices in light of advances in programming languages and verification tools. Singularity systems incorporate three key architectural features: software-isolated processes for protection of programs and system services, contract-based channels for communication, and manifest-based programs for verification of system properties. We describe this foundation in detail and sketch the ongoing research in experimental systems that build upon it.

[1]  Juan Chen,et al.  A simple typed intermediate language for object-oriented languages , 2005, POPL '05.

[2]  James R. Larus,et al.  Reflective program generation with patterns , 2006, GPCE '06.

[3]  Martín Abadi,et al.  Authorizing applications in singularity , 2007, EuroSys '07.

[4]  Saurabh Dighe,et al.  An 80-Tile 1.28TFLOPS Network-on-Chip in 65nm CMOS , 2007, 2007 IEEE International Solid-State Circuits Conference. Digest of Technical Papers.

[5]  Richard J. Beach,et al.  A structural view of the Cedar programming environment , 1986, TOPL.

[6]  B. Lampson,et al.  Authentication in distributed systems: theory and practice , 1991, TOCS.

[7]  Kevin J. Nowka,et al.  Custom circuit design as a driver of microprocessor performance , 2000, IBM J. Res. Dev..

[8]  Herbert Bos,et al.  MINIX 3: a highly reliable, self-repairing operating system , 2006, OPSR.

[9]  Brian N. Bershad,et al.  The interaction of architecture and operating system design , 1991, ASPLOS IV.

[10]  Martín Abadi,et al.  Authentication in the Taos operating system , 1994, TOCS.

[11]  George C. Necula,et al.  Safe kernel extensions without run-time checking , 1996, OSDI '96.

[12]  Brian N. Bershad,et al.  Extensibility safety and performance in the SPIN operating system , 1995, SOSP.

[13]  James R. Larus,et al.  Using Cohort-Scheduling to Enhance Server Performance , 2002, USENIX Annual Technical Conference, General Track.

[14]  Zhong Shao,et al.  A type-preserving compiler infrastructure , 2002 .

[15]  Jerome H. Saltzer,et al.  The protection of information in computer systems , 1975, Proc. IEEE.

[16]  Juan Chen,et al.  A garbage-collecting typed assembly language , 2007, TLDI '07.

[17]  Galen C. Hunt,et al.  Solving the starting problem: device drivers as self-describing artifacts , 2006, EuroSys '06.

[18]  Koushik Chakraborty,et al.  Computation spreading: employing hardware migration to specialize CMP cores on-the-fly , 2006, ASPLOS XII.

[19]  Kunle Olukotun,et al.  Niagara: a 32-way multithreaded Sparc processor , 2005, IEEE Micro.

[20]  James R. Larus,et al.  Deconstructing process isolation , 2006, MSPC '06.

[21]  Robert P. Fitzgerald,et al.  The case for profile-directed selection of garbage collectors , 2000, ISMM '00.

[22]  Martín Abadi,et al.  An Overview of the Singularity Project , 2005 .

[23]  James R. Larus,et al.  Sealing OS processes to improve dependability and safety , 2007, EuroSys '07.

[24]  James R. Larus,et al.  Language support for fast and reliable message-based communication in singularity OS , 2006, EuroSys.

[25]  Jonathan M. Smith,et al.  EROS: a fast capability system , 1999, SOSP.

[26]  Henry M. Levy,et al.  Capability-Based Computer Systems , 1984 .

[27]  George C. Necula,et al.  Capriccio: scalable threads for internet services , 2003, SOSP '03.