Survey
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project
Mobile operating system wikipedia , lookup
Plan 9 from Bell Labs wikipedia , lookup
Copland (operating system) wikipedia , lookup
Burroughs MCP wikipedia , lookup
Spring (operating system) wikipedia , lookup
Security-focused operating system wikipedia , lookup
Unix security wikipedia , lookup
Distributed operating system wikipedia , lookup
Operating Systems Lecture 13 Threads Read Ch 5.1 - 5.3 Operating System Concepts 5.1 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Threads A thread (a lightweight process) is a basic unit of CPU utilization. A thread has a single sequential flow of control. A thread is comprised of: A thread ID, a program counter, a register set and a stack. A process is the execution environment in which threads run. (Recall previous definition of process: program in execution). The process has the code section, data section, OS resources (e.g. open files and signals). Traditional processes have a single thread of control Multi-threaded processes have multiple threads of control The threads share the address space and resources of the process that owns them. Operating System Concepts 5.2 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Single and Multithreaded Processes Operating System Concepts 5.3 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Processes vs. Threads Which of the following belong to the process and which to the thread? Program code: local or temporary data: global data: allocated resources: execution stack: memory management info: Program counter: Parent identification: Thread state: Registers: Operating System Concepts 5.4 Process Thread Process Process Thread Process Thread Process Thread Thread Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Control Blocks The thread control block (TCB) contains: Thread state, Program Counter, Registers PCB' = everything else (e.g. process id, open files, etc.) The process control block (PCB) = PCB' U TCP Operating System Concepts 5.5 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Why use threads? Because threads have minimal internal state, it takes less time to create a thread than a process (10x speedup in UNIX). It takes less time to terminate a thread. It takes less time to switch to a different thread. A multi-threaded process is much cheaper than multiple (redundant) processes. Operating System Concepts 5.6 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Examples of Using Threads Threads are useful for any application with multiple tasks that can be run with separate threads of control. A Word processor may have separate threads for: User input Spell check grammar check displaying graphics document layout A web server may spawn a thread for each client Can serve clients concurrently with multiple threads. It takes less overhead to use multiple threads than to use multiple processes. Operating System Concepts 5.7 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Benefits Responsiveness: Threads allow a program to continue running even if part is blocked. For example, a web browser can allow user input while loading an image. Resource Sharing: Threads share memory and resources of the process to which they belong. Economy: Allocating memory and resources to a process is costly. Threads are faster to create and faster to switch between. Utilization of Multiprocessor Architectures: Threads can run in parallel on different processors. A single threaded process can run only on one processor no matter how many are available. Operating System Concepts 5.8 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 User Threads Thread management may be done at either the user level or the kernel (OS) level. User Threads: Thread management done by user-level threads library The kernel is unaware that the process is multithreaded. Thread creation and scheduling is done in user space without kernel intervention. Operating System Concepts 5.9 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Many-to-One Model Operating System Concepts 5.10 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 States of User Threads and Processes What happens when a process or thread is blocked? Suppose process B has two threads, of which thread 2 is running. The following conditions could occur: Thread 2 makes an I/O or other system call: The kernel puts process B into a blocked state. The thread data structure will still show thread 2 in the running state. Thread 2 is not actually running. (The entire process is blocked). Process B exhausts its time slice: The kernel puts process B into the ready state. Thread 2 still in running state (but not actually running!) Thread 2 needs action performed by Thread 1: Thread 2 goes into blocked state. Thread 1 starts running. Process B remains in running state. Operating System Concepts 5.11 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Pros and Cons of User Level Threads: Pros: Fast switch between threads (kernel is not needed). Can have multi-threaded process on a system that does not understand threads. Cheap to create and destroy threads. User has complete control over threads (e.g. can assign priorities, etc.) Cons: System call from one thread blocks all threads in the same process. Process cannot use multiple processors. Extra work for user. Operating System Concepts 5.12 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 User Level Thread Libraries User Level Thread Libraries include: POSIX Pthreads Mach C-Threads Solaris-2 UI threads. Operating System Concepts 5.13 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Kernel Level Threads Kernel Level Threads: All thread management is done by the Operating System. Each user-level thread maps to kernel thread. Kernel does creation, scheduling and management of threads. Examples - Windows 95/98/NT/2000 - OS/2 - Solaris-2 - Some flavors of UNIX Operating System Concepts 5.14 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 One-to-one Model Operating System Concepts 5.15 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Pros and Cons of Kernel Level Threads Pros: System call from a thread does not block other threads in the same process. One process can use multiple processors. Create/destroy/switch of threads is less expensive than for processes. Cons: Create/destroy/switch of threads is more expensive than for user level threads. CPU scheduling algorithms are unfair: Each thread is given the same time slice. Tasks with more threads are given more CPU time than those with fewer threads. Operating System Concepts 5.16 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Combining User and Kernel Level Threads User and Kernel level threads execute simultaneously. Allows many user level threads to be mapped to many kernel threads. If one user level thread is blocked, another kernel thread may be chosen to execute. Assigning a User Level thread to a Kernel Level thread is implicit and hidden from the programmer. Examples of systems with combination of User and Kernel Level threads: Solaris 2 Windows NT/2000 with the ThreadFiber package Some other UNIX flavors. Operating System Concepts 5.17 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005 Many-to-Many Model Operating System Concepts 5.18 Silberschatz, Galvin and Gagne 2002 Modified for CSCI 399, Royden, 2005