Operating Systems

Exploring the base abstractions from which developers build applications and practical implementations of those abstractions in operating systems.


The Operating Systems Group is part of the Systems and Networking Research Area. The most important job of an operating system is to provide a context within which programs can be created and run. Our group conducts fundamental and applied research into the base abstractions to create this context. To make our work relevant, we build prototype systems to evaluate our ideas and to prove their implemention into practical systems.


  • Drawbridge is a research prototype of a new form of virtualization for application sandboxing. Drawbridge combines two core technologie: First, a picoprocess, which is a process-based isolation container with a minimal kernel API surface. Second, a library OS, which is a very of Windows enlightened to run efficiently within a picoprocess.

  • Experiment 19 was a shunkworks project in late 2008 and early 2009 to re-imagine the Windows Phone platform. We created drivers and firmware to run Windows core components on prototype ARM-based phones. We ported the CLR to ARM and created an ARM JIT compiler. The prototype proved that Windows NT could achieve better performance than Windows CE on identical hardware. Within months of the completion of Experiment 19, Microsoft launched efforts to build what would become Windows Phone 8 and Windows RT for ARM tablets.

  • Singularity focused on the construction of dependable systems through innovation in the areas of systems, languages, and tools. We are researching OS innovations, extending programming languages, and developing new techniques and tools for specifying and verifying system behavior. This research occurs in a new OS also called Singularity.

Full Time Jobs

We are hiring! We are looking for research candidates with demonstrated qualities of research taste, innovation, and first-hand system building. We highly value a proven track record as demonstrated by strong publications in top venues. If you are interested in a full-time Researcher position, you will need to submit a C.V. or resume, a research statement, two publications you feel represent your best work, and provide at least three references. The minimum education requirement for a Researcher is a Ph.D. in Computer Science or equivalent.

We do most of our hiring in the spring of each year. To be considered in our spring candidate pool, please apply online by January 15, listing Galen Hunt as your primary contact.

Microsoft is an equal opportunity employer and supports workforce diversity.


If you are an exceptional Ph.D. student interested in a research internship, please apply through the MSR Internship Application site to our group. Most interns work during the summer (application deadline is January 15), but we are interested in "off season" interns as well.

We differentiate ourselves from university research programs by tackling ambitiously large research projects. We strongly prefer intern candidates with recommendation letters that establish clearly that the candidate has strong research skills and great systems building skills.  It is common for our interns to write many thousands of lines of systems code during an internship.

Selected Publications



    • Edmund B. Nightingale, Jeremy Elson, Jinliang Fan, Owen Hofmann, Jon Howell, and Yutaka Suzue, Flat Datacenter Storage, in 10th USENIX Symposium on Operating Systems Design and Implementation (OSDI 2012), USENIX, October 2012
    • Johnson Apacible, Rich Draves, Jeremy Elson, Jinliang Fan, Owen Hofmann, Jon Howell, Ed Nightingale, Reuben Olinsky, and Yutaka Suzue, MinuteSort with Flat Datacenter Storage, no. MSR-TR-2012-126, 15 May 2012






    • Frances Perry, Chris Hawblitzel, and Juan Chen, Simple and Flexible Stack Types, in International Workshop on Aliasing, Confinement and Ownership in object-oriented programming (IWACO 07), July 2007
    • Chris Hawblitzel, Heng Huang, Lea Wittie, and Juan Chen, A Garbage-Collecting Typed Assembly Language, in ACM Workshop on Types in Language Design and Implementation (TLDI 07), Association for Computing Machinery, Inc., January 2007