Operating Systems: Internals and Design Principles, 6/E William Stallings Chapter 4 Threads, SMP, and Microkernels Patricia Roy Manatee Community College, Venice, FL ©2008, Prentice Hall Processes and Threads • Resource ownership - process includes a virtual address space to hold the process image • Scheduling/execution- follows an execution path that may be interleaved with other processes • These two characteristics are treated independently by the operating system Processes and Threads • Dispatching is referred to as a thread or lightweight process • Resource of ownership is referred to as a process or task Multithreading • OS supports multiple, concurrent paths of execution within a single process Multithreading • MS-DOS supports a single user process and thread • UNIX supports multiple user processes but only supports one thread per process • Java run-time environment is a single process with multiple threads Threads and Processes Processes • A virtual address space which holds the process image • Protected access to processors, other processes, files, and I/O resources One or More Threads in Process • An execution state (running, ready, etc.) • Saved thread context when not running • An execution stack One or More Threads in Process • Some per-thread static storage for local variables • Access to the memory and resources of its process – all threads of a process share this Threads Benefits of Threads • Takes less time to create a new thread than a process • Less time to terminate a thread than a process • Less time to switch between two threads within the same process Benefits of Threads • Since threads within the same process share memory and files, they can communicate with each other without invoking the kernel Uses of Threads in a SingleUser Multiprocessing System • • • • Foreground and background work Asynchronous processing Speed of execution Modular program structure Threads • Suspending a process involves suspending all threads of the process since all threads share the same address space • Termination of a process, terminates all threads within the process Thread States • States associated with a change in thread state – Spawn • Spawn another thread – Block – Unblock – Finish • Deallocate register context and stacks Remote Procedure Call Using Single Thread RPC Using One Thread per Server Multithreading Adobe PageMaker User-Level Threads • All thread management is done by the application • The kernel is not aware of the existence of threads User-Level Threads Kernel-Level Threads • Windows is an example of this approach • Kernel maintains context information for the process and the threads • Scheduling is done on a thread basis Kernel-Level Threads Combined Approaches • Example is Solaris • Thread creation done in the user space • Bulk of scheduling and synchronization of threads within application Combined Approaches Relationship Between Thread and Processes Categories of Computer Systems • Single Instruction Single Data (SISD) stream – Single processor executes a single instruction stream to operate on data stored in a single memory • Single Instruction Multiple Data (SIMD) stream – Each instruction is executed on a different set of data by the different processors Categories of Computer Systems • Multiple Instruction Single Data (MISD) stream – A sequence of data is transmitted to a set of processors, each of which executes a different instruction sequence. Never implemented • Multiple Instruction Multiple Data (MIMD) – A set of processors simultaneously execute different instruction sequences on different data sets Parallel Processor Architectures Symmetric Multiprocessing • Kernel can execute on any processor • Typically each processor does selfscheduling form the pool of available process or threads Symmetric Multiprocessor Organization Multiprocessor Operating Systems Design Considerations • Simultaneous concurrent processes or threads – Kernel must be reentrant – Data structures need multiple update locking • Scheduling – Multiple schedulers in operation, no conflicts! • Synchronization – Shared data space, need locking Multiprocessor Operating Systems Design Considerations • Memory management – Paging issues – Sharing of hardware • Reliability and fault tolerance – Tolerate single processor failure – graceful degradation Microkernels - Motivation • • • • • Monolithic systems unsustainable First OS/360 had 1 million LOC Multics had 20 million! Layering helps, but not full solution Swap vertical layers for horizontal Microkernels • Small operating system core • Contains only essential core operating systems functions • Message passing through microkernel Kernel Architecture Benefits of a Microkernel Organization • Uniform interfaces – Don’t distinguish between kernel-level and user-level services – All services are provided by means of message passing • Extensibility • Flexibility – New features added – Existing features can be subtracted Benefits of a Microkernel Organization • Portability – Changes needed to port the system to a new processor are only in the microkernel • Reliability – Small microkernel can be rigorously tested Benefits of a Microkernel Organization • Distributed system support – Message are sent without knowing what the target machine is • Object-oriented operating systems – Components are objects with clearly defined interfaces that can be interconnected to form software Microkernel Performance • Message passing more expensive than SVC • Other factors offset this • Smaller can be better – Example: 12KB and 7 SVCs! – Perform as well as or better than layered architectures Microkernel Examples • Mach (CMU 1985 - basis of Apple OS X) • Chorus (INRIA 1980) Microkernel Design • Low-level memory management – Mapping each virtual page to a physical page frame Microkernel Design • Interprocess communication – Heavy use of shared memory • I/O and interrupt management – Translate interrupts into message passing – Device specific processing done outside kernel Windows Processes • Implemented as objects • An executable process may contain one or more threads • Both processes and thread objects have built-in synchronization capabilities Windows Processes Windows Process Object Windows Thread Object Thread States Solaris • Process includes the user’s address space, stack, and process control block • User-level threads • Lightweight processes (LWP) • Kernel threads Processes and Threads in Solaris LWP Data Structure • • • • Identifier Priority Signal mask Saved values of user-level registers LWP Data Structure • • • • Kernel stack Resource usage and profiling data Pointer to the corresponding kernel thread Pointer to the process structure Process Structure Solaris Thread States Linux Tasks • • • • State Scheduling information Identifiers Interprocess communication Linux Tasks • • • • • Links Times and timers File system Address space Processor-specific context Linux Process/Thread Model