Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of...
Transcript of Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of...
![Page 1: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/1.jpg)
ECE 344 Operating Systems
Operating Systems –Threads
ECE 344 – Week 3
Does OS/161 support threads?
![Page 2: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/2.jpg)
ECE 344 Operating Systems
Major OS Requirements• Interleave the execution of several
processes– Maximize CPU utilization while maintaining
reasonable response time– Support multiple users working interactively– Convenience (edit one program, while
compiling another one)• Allocate available resources for the
execution of programs• Provide for communication facilities
between executing programs
![Page 3: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/3.jpg)
ECE 344 Operating Systems
Processes Revisited
Several definitions of process:• A program in execution; a thread of execution• A unit of resource ownership• …
• Not supported in our current view of processes
Many applications consist of more than one thread of execution which share resources
![Page 4: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/4.jpg)
ECE 344 Operating Systems
Processes vs. ThreadsProcess• Unit of resource ownership with respect to the
execution of a single program• Can encompass more than one thread of execution
– E.G., Web browser/server evolution: more than one thread for calendar, GUI, mail (browser) and handling requests (server)
Thread• Unit of execution• Belongs to a process• Can be traced (i.e.., list the sequence of instructions)
![Page 5: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/5.jpg)
ECE 344 Operating Systems
Single and Multithreaded Processes
Terminology• Lightweight process (LWP), threads, multithreaded processes
![Page 6: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/6.jpg)
ECE 344 Operating Systems
Shared and Private Items of Threads
Per Process items• Address space• Global variables• Open files• Child processes• Pending alarms• Signal and signal
handlers• Accounting information
Per thread items• Program counter• Registers• Stack• Thread state
![Page 7: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/7.jpg)
ECE 344 Operating Systems
Processes vs. Threads
Use• Processes are largely
independent
Use• Threads are part of the
same “job” and are actively and closely cooperating
Kernel Kernel
Threads Threads
Process 1 Process 2 Process 3 Process
![Page 8: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/8.jpg)
ECE 344 Operating Systems
Thread Stack(s)
Kernel
Threads
Thread 1’sstack
Process
![Page 9: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/9.jpg)
ECE 344 Operating Systems
Common Thread Interface
• thread_create(…): creates a thread• thread_wait(…): waits for a specific
thread to exit• thread_exit(…): terminates the calling
thread• thread_yield(…): calling thread passes
control on voluntarily to another thread
![Page 10: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/10.jpg)
ECE 344 Operating Systems
Thread Interface Illustrated
create
wait(s)
t
rcreate s
exit
yield
![Page 11: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/11.jpg)
ECE 344 Operating Systems
Yield vs Waitt1
t2
t3
Yield()
Yield()
Yield()
Exit()
Exit()
Wait(s)
t
s
Exit()
t, s execute concurrently
![Page 12: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/12.jpg)
ECE 344 Operating Systems
Example: Multithreaded Web Server
Kernel
Network connection
Web server process
Web server cache
User space
Kernel space
Request dispatch thread
DISK
![Page 13: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/13.jpg)
ECE 344 Operating Systems
Alternatives:Single Threaded Web Server Impl.
• Sequential processing of requests• Finite state machine
– event-driven prg. model– A.k.a. interrupt-driven model
• Processes instead of threads
![Page 14: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/14.jpg)
ECE 344 Operating Systems
Single Threaded Web Server Impl.• Sequential processing of requests
– Gets request, processes it, gets next– CPU idle while data is retrieved from disk– Poor performance
• Finite state machine (IRP/event-driven prg. model)– Use non-blocking system calls (read)– Record state of current request– Event: Get next request– Event: On reply from disk (signal/interrupt) process data read– Acceptable performance– Complicated to develop, debug …
• Processes instead of threads– Use of IPC facilities et al. for communication (e.g., many CGI
and Web server implementations) (heavy weight solution)
![Page 15: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/15.jpg)
ECE 344 Operating Systems
FSM Algorithm
Loop //event loopget_nxt_eventif event is a web-request
…if not in web-cache
update req-tblnon-blking-read()
else if event is reply from diskupdate req-tblsend reply to client
//end loop
Non-blocking call, i.e., read and event loopExecute concurrently.
![Page 16: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/16.jpg)
ECE 344 Operating Systems
Example: Multithreaded Web Server
Kernel
Network connection
Web server process
Web server cache
User space
Kernel space
Request dispatch thread
DISK
![Page 17: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/17.jpg)
ECE 344 Operating Systems
Advantages of Threads in this Context• Application does not stall when one of its
operations blocks• Overhead for thread creation/destruction is
low - often much less than for processes• Simplification of programming model• Performance gains for machines with multiple
CPUs
Model CharacteristicsThreads Parallelism, blocking system callsSingle-threaded server No parallelism, blocking system callsFSM-based server Parallelism, non-blocking s. calls, IRPs
![Page 18: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/18.jpg)
ECE 344 Operating Systems
Context Switch Times
Creation time Synchronization time(in microseconds) using semaphores
(in microseconds)User thread 52 66LWP 350 390Process 1700 200
On SPARC station 2 from 1993, cf. UNIX Internals the new foundation. U. Vahalia.
![Page 19: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/19.jpg)
ECE 344 Operating Systems
Benefits of Threads (generally speaking)
• Increased concurrency (i.e., interleave blocking operations; e.g., computation and I/O in one process)
• Simplified programming model (cf. IRP-driven programming)
• Increased responsiveness (balance of I/O and compute-bound threads)
• Resource sharing (i.e., leads to less memory being used)
• Economy (i.e., cheaper to create threads)• Potential performance gain: Utilization of multi-CPU
architectures
![Page 20: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/20.jpg)
ECE 344 Operating Systems
Threads and Processes
One process - one thread One process – multiple thread
Multiple processes –multiple threads per process
Multiple processes –one thread per process
![Page 21: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/21.jpg)
ECE 344 Operating Systems
Threads and Processes
• Single process, single thread– MS DOS, old MAC OS
• Single process, multiple threads• Multiple processes, single threads
– Traditional UNIX• Multiple processes, multiple threads
– Modern UNIXes (Solaris et al.) and Windows 2000
![Page 22: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/22.jpg)
ECE 344 Operating Systems
Thread States
Three states (implementation dependent):• Running: currently active and using CPU• Ready: runable and waiting to be scheduled• Blocked: waiting for an event to occur (I/O,
signal)
ready
running
blocked
Thread blocks for input Scheduler picks another thread
Scheduler picks this thread
Input becomes avail.
![Page 23: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/23.jpg)
ECE 344 Operating Systems
Reasons for Leaving the Running State
• Thread terminates– exit() (system) call (termination)– kill() by another thread
• Thread cannot continue execution– Blocked waiting for I/O
• OS decides to schedule another process– Requires OS to be involved (e.g., system call or
interrupt)• Thread voluntarily gives another thread a chance
– yield() system call
![Page 24: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/24.jpg)
ECE 344 Operating Systems
Implementation of Threads - Overview
• In user space• In kernel space• Hybrids
![Page 25: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/25.jpg)
ECE 344 Operating Systems
User-level Threads
• Thread management done at the user-level, e.g., in a threads library (a.k.a. a thread run-time system)
• Kernel knows nothing about the existence of threads
• Examples- POSIX Pthreads- Mach c-threads- Solaris threads
![Page 26: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/26.jpg)
ECE 344 Operating Systems
User-level Threads
Kernel
Thread run-timesystem
Process
Thread table
PCB PCB …
Calls into the run-time are like (local) procedure calls (no kernel mode switch, no trap, no context switch required.)
![Page 27: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/27.jpg)
ECE 344 Operating Systems
Advantages
• Can be supported on operating systems that do not support threads inside the kernel
• Thread context switch is much faster then process context switch– No kernel mode switch required– Only registers are saved/loaded– Thread may voluntarily yield (local call)
• Consequently, thread scheduling is very efficient• May support per-process customized scheduling
algorithms• Better scalability (i.e., more threads, since no
kernel access and data structures are required)
![Page 28: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/28.jpg)
ECE 344 Operating Systems
Issues
• Implementation of blocking system calls– A blocking system call will block the process– The whole point was to allow for blocking
calls in the first place• Could change sys. calls to be all non-blocking
– Requires major rewrite of OS– Counter objective of supporting user-level
threads on many thread-unaware OSes• IRPs (e.g., page faults) may cause a context
switch at “odd” times
![Page 29: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/29.jpg)
ECE 344 Operating Systems
More Issues
• Threads may monopolize CPU (no clocks in process)
• Threads are introduced to interleave blocking calls with computation; however, once trapped, the OS can schedule further threads (hardly more work)
• No use for compute-bound tasks (unless multiple CPUs)
![Page 30: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/30.jpg)
ECE 344 Operating Systems
Kernel Threads• Supported by the kernel• Thread creation/destruction is done in the kernel; kernel
data structures are manipulated• Same thread management info as for user-level threads• Mgmt. info is subset of process context• Process context is also additionally managed• Blocking calls yield scheduling decisions (same & diff.
process)• Thread recycling• Considerable management cost and performance
implications• Examples: Windows 95/98/NT/2000, Solaris, Tru64
UNIX, Linux
![Page 31: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/31.jpg)
ECE 344 Operating Systems
Kernel Threads
Kernel
Process
Thread table
PCB PCB …
![Page 32: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/32.jpg)
ECE 344 Operating Systems
Hybrid Model
- Combines advantages of previous models
- Kernel schedules kernel threads- User threads are multiplexed
over kernel threads
![Page 33: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/33.jpg)
ECE 344 Operating Systems
Summary
• Limitations of traditional (single-threaded) process model
• Unit of resource ownership vs. unit of execution• Multiple threads of execution• Examples of multithreaded applications• Alternatives to multithreading (i.e., FSM-based)• Benefits of threads• Use of threads vs. use of processes• Thread implementation, i.e., user vs. kernel threads
and hybrids
![Page 34: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/34.jpg)
ECE 344 Operating Systems
Example: Solaris 2 Threads
![Page 35: Operating Systems – Threadsjacobsen/os/2007s/week3-threads.pdf · • Mgmt. info is subset of process context • Process context is also additionally managed • Blocking calls](https://reader036.fdocuments.net/reader036/viewer/2022081405/5f08f5957e708231d4248dd5/html5/thumbnails/35.jpg)
ECE 344 Operating Systems
Solaris Process