Hints for Computer System Design

Slides:



Advertisements
Similar presentations
MicroKernel Pattern Presented by Sahibzada Sami ud din Kashif Khurshid.
Advertisements

An Overview Of Virtual Machine Architectures Ross Rosemark.
CSC 360- Instructor: K. Wu Overview of Operating Systems.
Part IV: Memory Management
CS533 Concepts of Operating Systems Class 14 Virtualization and Exokernels.
Travis McVey, Diego Velasquez, Mark Whylie, Drem Darios, Elroy Ashtian Jr.
Lecture 19 Page 1 CS 111 Online Protecting Operating Systems Resources How do we use these various tools to protect actual OS resources? Memory? Files?
EXTENSIBILITY, SAFETY AND PERFORMANCE IN THE SPIN OPERATING SYSTEM B. Bershad, S. Savage, P. Pardyak, E. G. Sirer, D. Becker, M. Fiuczynski, C. Chambers,
Extensibility, Safety and Performance in the SPIN Operating System Presented by Allen Kerr.
Chorus and other Microkernels Presented by: Jonathan Tanner and Brian Doyle Articles By: Jon Udell Peter D. Varhol Dick Pountain.
G Robert Grimm New York University Extensibility: SPIN and exokernels.
Operating System Support Focus on Architecture
CS533 Concepts of Operating Systems Class 14 Virtualization.
INTRODUCTION OS/2 was initially designed to extend the capabilities of DOS by IBM and Microsoft Corporations. To create a single industry-standard operating.
Dawson R. Engler, M. Frans Kaashoek, and James O'Tool Jr.
G Robert Grimm New York University Extensibility: SPIN and exokernels.
Operating System Structure. Announcements Make sure you are registered for CS 415 First CS 415 project is up –Initial design documents due next Friday,
Memory Management 2010.
Hints for Computer System Design Paper by B. W. Lampson Presentation by Emerson Murphy-Hill.
Extensibility, Safety and Performance in the SPIN Operating System Dave Camarillo.
Memory Management 1 CS502 Spring 2006 Memory Management CS-502 Spring 2006.
CS-3013 & CS-502, Summer 2006 Memory Management1 CS-3013 & CS-502 Summer 2006.
Microkernels: Mach and L4
Early OS security Overview by: Greg Morrisett Cornell University, Edited (by permission) for CSUS CSc250 by Bill Mitchell.
Exokernel: An Operating System Architecture for Application-Level Resource Management Dawson R. Engler, M. Frans Kaashoek, and James O’Toole Jr. M.I.T.
CS533 Concepts of OS Class 16 ExoKernel by Constantia Tryman.
Slide 3-1 Copyright © 2004 Pearson Education, Inc. Operating Systems: A Modern Perspective, Chapter 3 Operating System Organization.
Basics of Operating Systems March 4, 2001 Adapted from Operating Systems Lecture Notes, Copyright 1997 Martin C. Rinard.
Stack Management Each process/thread has two stacks  Kernel stack  User stack Stack pointer changes when exiting/entering the kernel Q: Why is this necessary?
CSE 451: Operating Systems Autumn 2013 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Tanenbaum 8.3 See references
Microkernels, virtualization, exokernels Tutorial 1 – CSC469.
Paper by Engler, Kaashoek, O’Toole Presentation by Charles Haiber.
Disco : Running commodity operating system on scalable multiprocessor Edouard et al. Presented by Jonathan Walpole (based on a slide set from Vidhya Sivasankaran)
CS533 Concepts of Operating Systems Jonathan Walpole.
CS533 Concepts of Operating Systems Jonathan Walpole.
Copyright © Clifford Neuman and Dongho Kim - UNIVERSITY OF SOUTHERN CALIFORNIA - INFORMATION SCIENCES INSTITUTE Advanced Operating Systems Lecture.
Architecture Support for OS CSCI 444/544 Operating Systems Fall 2008.
Chapter 4 Storage Management (Memory Management).
Exokernel: An Operating System Architecture for Application-Level Resource Management" by Dawson R. Engler, M. Frans Kaashoek, and James O'Toole Jr. Chris.
© Janice Regan, CMPT 300, May CMPT 300 Introduction to Operating Systems Operating Systems Overview Part 2: History (continued)
The Performance of Microkernel-Based Systems
Background: Operating Systems Brad Karp UCL Computer Science CS GZ03 / M th November, 2008.
Supporting Multi-Processors Bernard Wong February 17, 2003.
Processes Introduction to Operating Systems: Module 3.
Scott Ferguson Section 1
EXTENSIBILITY, SAFETY AND PERFORMANCE IN THE SPIN OPERATING SYSTEM
A. Frank - P. Weisberg Operating Systems Structure of Operating Systems.
Operating Systems: Wrap-Up Questions answered in this lecture: What is an Operating System? Why are operating systems so interesting? What techniques can.
CS533 Concepts of Operating Systems Jonathan Walpole.
Virtual Machines Mr. Monil Adhikari. Agenda Introduction Classes of Virtual Machines System Virtual Machines Process Virtual Machines.
COMP091 – Operating Systems 1 Memory Management. Memory Management Terms Physical address –Actual address as seen by memory unit Logical address –Address.
Computer System Structures
Paper Discussions Karthik Dantu Steve Ko.
The Mach System Sri Ramkrishna.
Presentation by Omar Abu-Azzah
Group 8 Virtualization of the Cloud
EECS 582 Midterm Review Mosharaf Chowdhury EECS 582 – F16.
Introduction to Operating Systems
OS Virtualization.
Page Replacement.
CSE 451: Operating Systems Spring 2012 Module 6 Review of Processes, Kernel Threads, User-Level Threads Ed Lazowska 570 Allen.
Introduction to Operating Systems
Outline Chapter 2 (cont) OS Design OS structure
System calls….. C-program->POSIX call
Operating Systems Structure
CS703 – Advanced Operating Systems
Lecture Topics: 11/1 Hand back midterms
Presentation transcript:

Hints for Computer System Design Butler W. Lampson

System Design: Introduction Designing a computer system is hard! Is it like designing an algorithm? Designers hesitate about unclear choices & how they affect Flexibility Performance The freedom to make subsequent choices within the constraints of previous ones because: OSs don’t partition into isolated subsystems very well OS subsystems may interact in unexpected ways

System Design: Introduction Other reasons it’s so hard: Moore’s law OSs don’t improve by a factor of 100 every decade Backward compatibility OSs are fundamentally different than standard apps. Extremely large programs UNIX: 1 Million lines of code Windows: 29 million lines of code OSs have to deal with potentially hostile users & at same time allow users to share information

System Design: Introduction Even more reasons it’s so hard: OSs live for a very long time UNIX is over a quarter of a century old Must prepare for hardware/software changes OS designers do not have a good idea how their systems will ultimately be used Email & web browsers came after UNIX OSs have to run on multiple hardware platforms OSs frequently have to be backward compatible

System Design: The Slogans

Functionality: The Interface Do one thing well (keep it simple) Don’t generalize Extensible OS designs Microkernels: general interface, few assumptions made about implementation Exokernel: kernel provides resource protection, just exports hardware Get it right Make it fast Don’t hide power Virtualization: virtual hardware exposed is functionally identical to the underlying hardware Exokernel: the high-performance of the hardware is just exported to the user

Functionality: The Interface Use procedure arguments to provide flexibility in an interface Leave it to the client Monitors: locking & signaling mechanisms to very little, leaving all the real work to the client Keep basic interfaces stable Keep a place to stand if you must change interfaces (backward compatibility) Examples: Emulation library: microkernels emulate interfaces by trap redirection Elephant file system: Keep One Virtualization: VMM multiplexing at the granularity of an operating system

Functionality: Implementation Plan to throw one away Keep secrets (encapsulation) Virtualization: Hide the messy stuff like NUMA Monitors Allow access only at certain entry points Use a good idea again Divide and Conquer RPC/LRPC/URPC: Progression solved a problem in parts: cross-machine, cross-domain, better cross-domain (less kernel involvement)

Functionality: Completeness Separate normal and worst case The normal case must be fast The worst case must make progress RPC & its variations Cross-domain common case Cross-machine happens only sometimes Specialization Partial evaluation when possible Replugging when necessary

Speed: Interface Split resources Use static analysis VMM: Multiplexing resources Guest OSs aren’t even aware that they’re sharing Use static analysis Specialization (static): predicates known at compile time allows for partial evaluation Dynamic Translation Specialization (dynamic): at run-time predicates that hold for the remainder of execution or some bounded time period (packet filter interpreter)

Speed: Implementation Cache Answers to expensive computations Use hints The Ethernet: exponential backoff Links in web pages When in doubt use brute force Compute in background Use batch processing Soft timers: uses trigger states to batch process handling events to avoid trashing the cache more often than necessary RCU: memory reclamation done in batches Cleanup in log structured file systems: segment cleaning could be scheduled at nighttime.

Speed: Completeness Shed load to control demand Safety First SEDA Adaptive load shedding Apache Bounded thread pool Safety First When allocating resources remember safety first Avoid temptation to try to obtain optimum performance (instead try to avoid disaster) Progression of kernel structuring approaches for extensibility Microkernels, sandboxing, SPIN vs. Mach (some versions) & Chorus

Fault-tolerance End-to-end Log updates We’ll see this next! Log updates Logs can be reliably written/read Logs can be cheaply forced out to disk, which can survive a crash Log structured file systems RAID5 in Elephant Make actions atomic or restartable RCU: changes are seen as atomic to all processes

System Design: Conclusion Just remember: Designing an OS starts with determining what it should do The interface should be simple, complete, & efficient There probably isn’t a “best” solution for even one part of any system Just don’t choose a terrible solution Have a clear division of responsibility among the parts

“The unavoidable price of reliability is simplicity.” System Design: Quotes “Perfection is reached not when there is no longer anything to add, but when there is no longer anything to take away” --A. Saint-Exupery “The unavoidable price of reliability is simplicity.” --C. Hoare

System Design: References Jon Walpole “Hints for Computer System Design” Lampson. Modern Operating Systems, Second Edition. Tannenbaum, pp. 855-894. http://c2.com/cgi/wiki?SpiralModel http://www.dpw.wau.nl/pv/temp/clipart/ http://firstmonday.org/issues/issue7_11/tuomi/