Threads, SMP, and Microkernels Chapter 4 1 Process: Some Info. • Motivation for threads! • Two fundamental aspects of a “process”: • Resource ownership • Scheduling or execution • 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 2 Process • Dispatching is referred to as a thread or lightweight process • Resource of ownership is referred to as a process or task • So far, we have considered processes that had just one thread: • A “process” or a “process with one thread” are kind of similar! 3 Multithreading • An attempt to define multithreading: • Operating system supports multiple threads of execution within a single process • MS-DOS supports a single thread • UNIX supports multiple user processes but only supports one thread per process • Windows, Solaris, Linux, Mach, and OS/2 support multiple threads 4 5 What exactly is a Process now? • Have a virtual address space which holds the process image • Protected access to processors, other processes, files, and I/O resources 6 What exactly is a Thread now? • • • • An execution state (running, ready, etc.) Saved thread context when not running Has an execution stack Some per-thread static storage for local variables • Access to the memory and resources of its process • All threads of a process share this 7 8 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 • Since threads within the same process share memory and files, they can communicate with each other without invoking the kernel 9 Uses of Threads in a Single-User Multiprocessing System • Foreground to background work: • In GUI-based applications, one thread can make display and the other can process input • Asynchronous processing: • Daemons or services in OSes • Speed of execution: • Make even better use of processor, especially in multiprocessor systems • Modular program structure 10 Threads: What happens to state models? • 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 11 Thread States • States associated with a change in thread state • Spawn • Spawn another thread • Block • Unblock • Finish • Deallocate register context and stacks 12 Remote Procedure Call Using Single Thread 13 Remote Procedure Call Using Threads 14 Multithreading 15 TOP Command 16 PSTREE Command 17 /proc directory on Linux 18 Details of Process 2114 19 Adobe PageMaker 20 Categories of Thread Implementation • User-level threads • Kernel-level threads 21 22 User-Level Threads • All thread management is done by the application • The kernel is not aware of the existence of threads 23 User-Level Threads 24 25 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 26 Kernel-Level Threads 27 VAX Running UNIX-Like Operating System 28 Combined Approaches • Example is Solaris • Thread creation done in the user space • Bulk of scheduling and synchronization of threads within application 29 Combined Approaches 30 Relationship Between Threads and Processes 31 Flynn’s Taxonomy • There is no authoritative classification of parallel computers! • Flynn’s taxonomy is one such classification based on number of instruction and data stream processed by a parallel computer: • • • • Single Instruction Single Data (SISD) Multiple Instruction Single Data (MISD) Single Instruction Multiple Data (SIMD) Multiple Instruction Multiple Data (MIMD) • Almost all modern computers fall in this category 32 Flynn’s Taxonomy • Extensions to Flynn’s taxonomy: • Single Program Multiple Data (SPMD)—a programming model • This classification is largely outdated! 33 34 Symmetric Multi-Processors (SMP) • A SMP is a parallel processing system with a shared-everything approach: • The term signifies that each processor shares the main memory and possibly the cache • Typically a SMP can have 2 to 256 processors • Examples include AMD Athlon, AMD Opteron 200 and 2000 series, Intel XEON etc 35 Shared Memory • All processors have access to shared memory: • Notion of “Global Address Space” 36 37 Multiprocessor Operating System Design Considerations • Simultaneous concurrent processes or threads: • Executing same kernel code should not result in erroneous behavior • Scheduling: • Opportunities exist to execute multiple threads of the same process • Synchronization • Memory management • Reliability and fault tolerance 38 Microkernels • Small operating system core • Contains only essential core operating systems functions • Many services traditionally included in the operating system are now external subsystems • • • • • Device drivers File systems Virtual memory manager Windowing system Security services 39 40 Benefits of a Microkernel Organization • • • • • • • Uniform interface on request made by a process Extensibility Flexibility Portability Reliability Distributed System Support Object-oriented Operating System 41 Microkernel Design • Low-level memory management • Mapping each virtual page to a physical page frame 42 Microkernel Design • Interprocess communication • I/O and interrupt management 43