Thread Processes and Threads Traditional process One thread
- Slides: 52
Thread
Processes and Threads Traditional process One thread of control through a large, potentially sparse address space Address space may be shared with other processes (shared mem) Collection of systems resources (files, semaphores) Thread (light weight process) A flow of control through an address space Each address space can have multiple concurrent control flows Each thread has access to entire address space http: //lass. cs. umass. edu/~shenoy/courses/677/le Potentially parallel execution, minimal state (low ctures. html
Threads Each thread has its own stack, PC, registers Share address space, files, … http: //lass. cs. umass. edu/~shenoy/courses/677/le ctures. html
Why use Threads? Large multiprocessors need many computing entities (one per CPU) Switching between processes incurs high overhead With threads, an application can avoid perprocess overheads Thread creation, deletion, switching cheaper than processes Threads have full access to address space (easy sharing) http: //lass. cs. umass. edu/~shenoy/courses/677/le Threads can execute in parallel on ctures. html
Why Threads? Single threaded process: blocking system calls, no parallelism Finite-state machine [event-based]: nonblocking with parallelism Multi-threaded process: blocking system calls with parallelism Threads retain the idea of sequential processes with blocking system calls, and yet achieve parallelism Software engineering perspective Applications are easier to structure as a collection of threads CS 677: Distributed OS Each thread performs several [mostly
Multi-threaded Clients Example : Web Browsers such as IE are multi-threaded Such browsers can display data before entire document is downloaded: performs multiple simultaneous tasks Fetch main HTML page, activate separate threads for other parts Each thread sets up a separate connection with the server Uses blocking calls Each part (gif image) fetched separately and in parallel CS 677: Distributed OS Advantage: connections can be setup to
Multi-threaded Server Example Apache web server: pool of pre-spawned worker threads Dispatcher thread waits for requests For each request, choose an idle worker thread Worker thread uses blocking system calls to service web request CS 677: Distributed OS
Thread Usage A multithreaded Web server
Thread Usage Rough outline of code for previous slide (a) Dispatcher thread (b) Worker thread
Thread Usage Three ways to construct a server
Implementing Threads in User Space A user-level threads package
Implementing Threads in the Kernel A threads package managed by the kernel
Hybrid Implementations Multiplexing user-level threads onto kernel- level threads
Scheduler Activations Goal – mimic functionality of kernel threads gain performance of user space threads Avoids unnecessary user/kernel transitions Kernel assigns virtual processors to each process lets runtime system allocate threads to processors Problem: Fundamental reliance on kernel (lower layer) calling procedures in user space (higher layer)
Pop-Up Threads Creation of a new thread when message arrives (a) before message arrives (b) after message arrives
Making Single-Threaded Code Multithreaded(1) Conflicts between threads over the use of a global variable
Making Single-Threaded Code Multithreaded (2) Threads can have private global variables
Thread Management Creation and deletion of threads Static versus dynamic Critical sections Synchronization primitives: blocking, spin-lock (busy-wait) Condition variables Global thread variables Kernel versus user-level threads CS 677: Distributed OS
User-level versus kernel threads Key issues: Cost of thread management More efficient in user space Ease of scheduling Flexibility: many parallel programming models and schedulers Process blocking – a potential problem CS 677: Distributed OS
User-level Threads managed by a threads library Kernel is unaware of presence of threads Advantages: No kernel modifications needed to support threads Efficient: creation/deletion/switches don’t need system calls Flexibility in scheduling: library can use different scheduling algorithms, can be application dependent Disadvantages Need to avoid blocking system calls [all threads block] CS 677: Distributed OS Threads compete for one another
User-level threads CS 677: Distributed OS
Kernel-level threads Kernel aware of the presence of threads Better scheduling decisions, more expensive Better for multiprocessors, more overheads for uniprocessors CS 677: Distributed OS
Light-weight Processes Several LWPs per heavy-weight process User-level threads package Create/destroy threads and synchronization primitives Multithreaded applications – create multiple threads, assign threads to LWPs (one-one, manymany) Each LWP, when scheduled, searches for a runnable thread [two-level scheduling] Shared thread table: no kernel support needed When a LWP thread block on system call, switch to kernel mode and OS context switches to another LWP CS 677: Distributed OS
LWP Example CS 677: Distributed OS
Thread Packages Posix Threads (pthreads) Widely used threads package Conforms to the Posix standard Sample calls: pthread_create, … Typical used in C/C++ applications Can be implemented as user-level or kernel-level or via LWPs Java Threads Native thread support built into the language Threads are scheduled by the JVM CS 677: Distributed OS
การสนบสนนของ Thread Kernel thread สรางและจดการไดชากวา ทำให user thread ตวอยาง Windows XP/2000, Solaris, Linux, Tru 64 UNIX, Mac OS X
Many-to-one
One-to-one
Many-to-many
Two-level model
Thread Libraries Thread library provides programmer with API for creating and managing threads Two primary ways of implementing Library entirely in user space Kernel-level library supported by the OS
Thread-Local Storage Thread-local storage (TLS) allows each thread to have its own copy of data Useful when you do not have control over the thread creation process (i. e. , when using a thread pool) Different from local variables Local variables visible only during single function invocation TLS visible across function invocations Similar to static data TLS is unique to each thread
Windows xp threads
Linux threads
- Process vs thread
- Threads vs processes
- Process and threads
- Process and threads
- Slidetodoc.com
- Concurrent in os
- Traditional manufacturing processes
- Willow cabin speech
- Example of process and thread
- Sockets and threads
- One god one empire one religion
- One one one little dogs run
- One king one law one faith
- One god one empire one emperor
- One team one plan one goal
- See one do one teach one
- See one, do one, teach one
- Studiendekanat uni bonn
- Asean tourism strategic plan
- One vision one identity one community
- Task thread process
- Foreground app
- Golden thread model
- C11 threads
- Shared memory java
- Conventional representation of internal thread
- Flexible flat material made by interlacing yarns
- Escalonador de processos
- Os threads
- Basket of threads buddhism
- Needle like threads of spongy bone
- Epri iwc
- Pintos project 1 alarm clock
- Posix threads in os
- Threads java
- Osteospermum white lightning
- Forum.unity.com/threads/game-over.54735
- /threads/ fiji
- Threads consume cpu in best possible manner
- Lightweight thread
- Forum.unity.com/threads/game-over.54735
- Sequence diagram threads
- Threads cannot be implemented as a library
- Threads.h
- Which of the following is a metal cutting operation
- Cuda threads per block
- Threads cannot be implemented as a library
- Two level model thread
- Cuda global synchronization
- Threads in distributed systems
- Ece threads
- What is thread in operating system
- Ece threads