Transcript Week-7

Chapter 4: Threads
Operating System Concepts with Java – 8th Edition
14.1
Silberschatz, Galvin and Gagne ©2009
Announcements
 Project -2 deadline extension? – 09/26

10% bonus who submit before 09/24 11:59 PM
 Project-3 will be uploaded by 09/27

Multithreaded server using sockets
 Midterm exam – 10/03 or 10/08
 In
class exam, closed book, 1 cheat sheet
allowed
 Signup for homework presentations
Operating System Concepts with Java – 8th Edition
14.2
Silberschatz, Galvin and Gagne ©2009
User-level – Kernel-level Thread Mapping
 Many-to-One
 One-to-One
 Many-to-Many
Operating System Concepts with Java – 8th Edition
14.3
Silberschatz, Galvin and Gagne ©2009
Many-to-One
 Many user-level threads mapped to single
kernel thread
 Thread management done by user-level
library
 Entire process blocks if a thread makes
blocking system call
 Not suitable for multi-processor environment
 Examples:

Solaris Green Threads

GNU Portable Threads
Operating System Concepts with Java – 8th Edition
14.4
Silberschatz, Galvin and Gagne ©2009
Many-to-One Model
Operating System Concepts with Java – 8th Edition
14.5
Silberschatz, Galvin and Gagne ©2009
One-to-One
 One user-level thread mapped to single
kernel thread
 Provides for more concurrency
 Suitable for multi-processor systems
 Drawback: Thread creation requires kernel
intervention
 Systems
restrict number of threads
 Examples:

Linux Threads

WIndowsThreads
Operating System Concepts with Java – 8th Edition
14.6
Silberschatz, Galvin and Gagne ©2009
One-to-one Model
Operating System Concepts with Java – 8th Edition
14.7
Silberschatz, Galvin and Gagne ©2009
Many – to - Many
 Multiplexes many user-level threads to equal
or smaller number of kernel threads
 Number of kernel threads may be specific to
application or system
 Does not suffer from drawbacks of one-to-
one or many-to-one models
 No
restriction on number of threads user
can create
 Example: Windows NT/2000 with
ThreadsFiber package
Operating System Concepts with Java – 8th Edition
14.8
Silberschatz, Galvin and Gagne ©2009
Many-to-Many Model
Operating System Concepts with Java – 8th Edition
14.9
Silberschatz, Galvin and Gagne ©2009
Two-Level Model
 Variant of Many-to-Many model
 Multiplexes user-level threads to equal or
smaller number of kernel threads
 Also allows a user-level thread to bind to a
kernel-level thread
 Examples:

IRIX

HP-UX

Tru64 UNIX

Solaris 8 and earlier
Operating System Concepts with Java – 8th Edition
14.10
Silberschatz, Galvin and Gagne ©2009
Two-level Model
Operating System Concepts with Java – 8th Edition
14.11
Silberschatz, Galvin and Gagne ©2009
Thread Libraries
 Thread library provides programmer with API for
creating and managing threads
 Library entirely in user space
 Code
and data structures entirely in user space
 Kernel-level library supported by the OS
 Code
and data structures in kernel space
 Invoking
functions will cause system call
 Pthreads – Can be either user or system-level
 Win32 Threads – Kernel level
 Java Threads – Depends upon the host OS
Operating System Concepts with Java – 8th Edition
14.12
Silberschatz, Galvin and Gagne ©2009
Pthreads
 May be provided either as user-level or kernel-
level
 A POSIX standard (IEEE 1003.1c) API for thread
creation and synchronization – not an actual
implementation
 API specifies behavior of the thread library,
implementation is up to development of the library
 Common in UNIX operating systems (Solaris,
Linux, Mac OS X)
Operating System Concepts with Java – 8th Edition
14.13
Silberschatz, Galvin and Gagne ©2009
Pthreads (Contd.)
 pthread_t – thread identifier
 pthread_attr_t – thread attributes
 pthread_create – function to create threads
 Need
 The
to specify a start routine
routine can take a single parameter (pointer)
 Global
variables shared among all threads
 pthread_wait() – wait for thread to complete
 pthread_exit() – Thread terminates itself
Operating System Concepts with Java – 8th Edition
14.14
Silberschatz, Galvin and Gagne ©2009
Java Threads
 Java threads are managed by the JVM
 Java two mechanisms for creating threads

Create a new class derived from Thread class
overriding the run() method

Implementing the Runnable interface

Must define the run() method

Code provided in the run() method executes as
new thread
Operating System Concepts with Java – 8th Edition
14.15
Silberschatz, Galvin and Gagne ©2009
Java Threads (Contd.)
 Code that the new thread executes provided in
run() method of class implementing runnable
 Creating a thread – start() method

Note that creating a thread object does not create the
thread

Allocates memory for new thread

Calls run() method of the class implementing runnable
 Data sharing via passing object references
 join () for waiting on threads (equivalent to
pthreads_join())
Operating System Concepts with Java – 8th Edition
14.16
Silberschatz, Galvin and Gagne ©2009
Java Threads - Example Program
Operating System Concepts with Java – 8th Edition
14.17
Silberschatz, Galvin and Gagne ©2009
Java Threads - Example Program
Operating System Concepts with Java – 8th Edition
14.18
Silberschatz, Galvin and Gagne ©2009
Java Thread States
Operating System Concepts with Java – 8th Edition
14.19
Silberschatz, Galvin and Gagne ©2009
Threading Issues
 Semantics of fork() and exec() system calls
 Thread cancellation of target thread

Asynchronous or deferred
 Signal handling
 Thread pools
 Thread-specific data
 Scheduler activations
Operating System Concepts with Java – 8th Edition
14.20
Silberschatz, Galvin and Gagne ©2009
Semantics of fork() and exec()
 What happens if a thread calls fork()
 Duplicate
 Some
only the calling thread or all threads?
Unix systems provide two types of fork()
 exec() works in a similar fashion as discussed
before
 If exec() called right after forking, no need to
duplicate all threads
 If exec() not called after forking all threads need
to be duplicated
Operating System Concepts with Java – 8th Edition
14.21
Silberschatz, Galvin and Gagne ©2009
Thread Cancellation
 Terminating a thread before it has finished
 Why termination is needed?
 Asynchronous cancellation

Another thread immediately terminates target thread

Drawback: Cancelled thread might be holding some
system resources or updating shared data
 Deferred cancellation

Target thread periodically checks if it should be
cancelled

Cancellation points in Pthreads

Provides opportunity for cancelled thread to cleanup
Operating System Concepts with Java – 8th Edition
14.22
Silberschatz, Galvin and Gagne ©2009
Java Thread Cancellation
 Asynchronous termination via stop() method –
deprecated
 interrupt() method for deferred cancellation
 Sets
the interruption status
 Threads can periodically check their interruption
status using interrupted or isInterrupted() methods
 Both
are defined in the Thread class
 currentThread()
to obtain the thread object
corresponding to the thread that is currently
running
Operating System Concepts with Java – 8th Edition
14.23
Silberschatz, Galvin and Gagne ©2009
Signal Handling
 Signals are used in to notify a process that a
particular event has occurred.
 A signal handler is used to process signals.
1.
Signal is generated by particular event
2.
Signal is delivered to a process
3.
Signal is handled
 Two types of signals

Synchronous signals

Asynchronous signals
Operating System Concepts with Java – 8th Edition
14.24
Silberschatz, Galvin and Gagne ©2009
Signal Handling (Contd.)
 Options:

Deliver the signal to the thread to which the signal
applies

Deliver the signal to every thread in the process

Deliver the signal to certain threads in the process

Assign a specific thread to receive all signals for the
process
 Unix systems allow threads to specify the signals it will
block and signals it will process

Deliver signal to any thread that does not block it
Operating System Concepts with Java – 8th Edition
14.25
Silberschatz, Galvin and Gagne ©2009
Thread Pools
 On-demand thread creation has inherent
problems
 Create a number of threads in a pool where they
await work.
 Advantages:
 Usually
slightly faster to service a request with
an existing thread than create a new thread.
 Allows
the number of threads in the
application(s) to be bound to the size of the
pool.
Operating System Concepts with Java – 8th Edition
14.26
Silberschatz, Galvin and Gagne ©2009
End of Chapter 4
Operating System Concepts with Java – 8th Edition
14.27
Silberschatz, Galvin and Gagne ©2009
Chapter 5: CPU Scheduling
Operating System Concepts with Java – 8th Edition
14.28
Silberschatz, Galvin and Gagne ©2009
Chapter 5: CPU Scheduling
 Basic Concepts
 Scheduling Criteria
 Scheduling Algorithms
 Thread Scheduling
 Multiple-Processor Scheduling
 Operating Systems Examples
 Algorithm Evaluation
Operating System Concepts with Java – 8th Edition
14.29
Silberschatz, Galvin and Gagne ©2009
Objectives
 To introduce CPU scheduling, which is the
basis for multiprogrammed operating
systems
 To describe various CPU-scheduling
algorithms
 To discuss evaluation criteria for selecting a
CPU-scheduling algorithm for a particular
system
Operating System Concepts with Java – 8th Edition
14.30
Silberschatz, Galvin and Gagne ©2009
Basic Concepts
 Maximum CPU utilization obtained with
multiprogramming
 Not
a good idea to “idle” the CPU
 Jobs typically do I/O to get the data they need
to process

Process will not actively utilize CPU when doing I/O
 CPU–I/O Burst Cycle – Cycle of CPU execution
and I/O wait
Operating System Concepts with Java – 8th Edition
14.31
Silberschatz, Galvin and Gagne ©2009
Alternating Sequence of CPU And I/O Bursts
Operating System Concepts with Java – 8th Edition
14.32
Silberschatz, Galvin and Gagne ©2009
CPU Burst Distribution
 Processes alternate between CPU burst and
I/O burst
 Process begins with a CPU burst and ends with
a CPU burst
 Duration of CPU and I/O bursts vary widely
 CPU-bound jobs have relatively long CPU-
bursts
 I/O bound jobs have shorter CPU bursts
Operating System Concepts with Java – 8th Edition
14.33
Silberschatz, Galvin and Gagne ©2009
Histogram of CPU-burst Times
Operating System Concepts with Java – 8th Edition
14.34
Silberschatz, Galvin and Gagne ©2009
CPU Scheduler
 Selects from among the processes in ready queue and
allocates the CPU to one of them
 CPU scheduling decisions may take place when a
process:
1. Switches from running to waiting state (e.g., I/O)
2. Switches from running to ready state (e.g., interrupt)
3. Switches from waiting to ready
4.
Terminates
 Scheduling under 1 and 4 is nonpreemptive
 All other scheduling is preemptive
Operating System Concepts with Java – 8th Edition
14.35
Silberschatz, Galvin and Gagne ©2009
Dispatcher
 Dispatcher module gives control of the CPU to the
process selected by the short-term scheduler; this
involves:

switching context

switching to user mode

jumping to the proper location in the user
program to restart that program
 Dispatch latency – time it takes for the dispatcher
to stop one process and start another running
Operating System Concepts with Java – 8th Edition
14.36
Silberschatz, Galvin and Gagne ©2009
Scheduling Criteria
 CPU utilization – %age of time CPU is busy
 Throughput – # of processes that complete their
execution per time unit
 Turnaround time – amount of time to execute a
particular process
 Waiting time – amount of time a process has been
waiting in the ready queue
 Response time – amount of time it takes from when
a request was submitted until the first response is
produced, not output (for time-sharing environment)
Operating System Concepts with Java – 8th Edition
14.37
Silberschatz, Galvin and Gagne ©2009
Scheduling Algorithm Optimization Criteria
 Max CPU utilization
 Max throughput
 Min turnaround time
 Min waiting time
 Min response time
Operating System Concepts with Java – 8th Edition
14.38
Silberschatz, Galvin and Gagne ©2009