210 likes | 323 Views
Chapter 5: Threads. Overview Multithreading Models Threading Issues Pthreads Solaris 2 Threads Windows 2000 Threads Linux Threads Java Threads. Process VS Thread. Process has Process environment – address space with code and data, open file handles, accounting info, other resources
E N D
Chapter 5: Threads • Overview • Multithreading Models • Threading Issues • Pthreads • Solaris 2 Threads • Windows 2000 Threads • Linux Threads • Java Threads Operating System Concepts
Process VS Thread • Process has • Process environment – address space with code and data, open file handles, accounting info, other resources • Thread of control – program counter, register values, stack has execution history, current execution state • Thread is a lightweight process • Has only the thread of control • Environment is shared with other threads in the same process Operating System Concepts
Single and Multithreaded Processes Operating System Concepts
Benefits • Responsiveness • Multithreaded application can be more interactive • Resource Sharing • Threads share resources • Economy • Creating a process and allocating resources is costly – creating a thread is cheaper • Utilization of Multi Processor Architectures • Many large computers have several CPUs Operating System Concepts
User Threads • Thread management done by user-level threads library • Thread creation and management is fast – no kernel involvement • No sophisticated scheduling • Can be implemented on an O.S. that doesn’t support threads • Examples - POSIX Pthreads - Mach C-threads - Solaris threads Operating System Concepts
Kernel Threads • Supported by the Kernel • Slower to create and manage • Kernel provides scheduling and management • In a process with several threads, a page fault by one thread will not block entire process if other threads are runnable • Examples - Windows 95/98/NT/2000 - Solaris - Tru64 UNIX - BeOS - Linux Operating System Concepts
Multithreading Models • How to get the advantages of both user and kernel threads without the disadvantages of either: • Many-to-One • One-to-One • Many-to-Many Operating System Concepts
Many-to-One • Many user-level threads mapped to single kernel thread (process). • Used on systems that do not support kernel threads. Operating System Concepts
Many-to-One Model Operating System Concepts
One-to-One • Each user-level thread maps to kernel thread. • Examples - Windows 95/98/NT/2000 - OS/2 Operating System Concepts
One-to-one Model Operating System Concepts
Many-to-Many Model • Allows many user level threads to be mapped to many kernel threads. • Allows the operating system to create a sufficient number of kernel threads. • Solves the blocking problem while maintaining efficient thread creation and management. • Solaris 2 • Windows NT/2000 with the ThreadFiber package Operating System Concepts
Many-to-Many Model Operating System Concepts
Threading Issues • Semantics of fork() and exec() system calls. If multithreaded process forks a child, does the child process have the same number of active threads? • Thread cancellation. Immediate or deferred cancellation. • Signal handling The O.S. uses a signal to notify a process that an event has occurred. If process is multithreaded, where to deliver signal? • Thread pools Reuse threads in some applications – web server • Thread specific data Thread tables handle thread specific data the way PCBs handle process specific data. Operating System Concepts
Pthreads • a POSIX standard (IEEE 1003.1c) API for thread creation and synchronization. • API specifies behavior of the thread library, implementation is up to development of the library. • Common in UNIX operating systems. Operating System Concepts
Solaris 2 Threads Operating System Concepts
Solaris Process Several light weight processes can belong to a Solaris process (kernel thread) Operating System Concepts
Windows 2000 Threads • Implements the one-to-one mapping. • Each thread contains - a thread id - register set - separate user and kernel stacks - private data storage area Operating System Concepts
Linux Threads • Linux refers to them as tasks rather than threads. • Thread creation is done through clone() system call. • Clone() allows a child task to share the address space of the parent task (process) Operating System Concepts
Java Threads • Java threads may be created by: • Extending Thread class • Implementing the Runnable interface • Java threads are managed by the JVM. Operating System Concepts
Java Thread States Operating System Concepts