Download Lecture 19 - UCF Computer Science

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
CGS 3763 Operating Systems Concepts
Spring 2013
Dan C. Marinescu
Office: HEC 304
Office hours: M-Wd 11:30 - 12:30 AM
Lecture 19 – Wednesday, February 20, 2013

Last time:


Today:




Pthreads
Java threads
CPU scheduling
Next time


Threads
CPU Scheduling
Reading assignments

Chapters 4 and 5 of the textbook
Lecture 19
2
Pthreads



POSIX (Portable Operating System Interface) - a family
of standards specified by the IEEE for maintaining compatibility
between operating systems.
Pthreads – POSIX standard defining an API for thread creation and
synchronization.
A tutorial on Pthreads at
https://computing.llnl.gov/tutorials/pthreads/#Pthread
Lecture 19
3
Pthreads


Threads use and exist within these process resources, yet are able
to be scheduled by the operating system and run as independent
entities largely because they duplicate only the bare essential
resources that enable them to exist as executable code.
This independent flow of control is accomplished because a thread
maintains its own:
 Stack pointer
 Registers
 Scheduling properties (such as policy or priority)
 Set of pending and blocked signals
 Thread specific data.
Lecture 19
4
UNIX PROCESS
THREADS WITHIN A UNIX PROCESS
Lecture 19
5
Timing results for: (1) the fork() subroutine; (2) the pthread_create() subroutine.
Timings in seconds reflect 50,000 process/thread creations.
Don't expect the system and user times to add up to real time, because these are
SMP systems with multiple CPUs working on the problem at the same time.
Lecture 19
6
Pthreads API




Thread management: Routines that work directly on threads creating, detaching, joining, etc. They also include functions to
set/query thread attributes (joinable, scheduling etc.)
Mutexes: Routines that deal with synchronization, called a "mutex",
which is an abbreviation for "mutual exclusion". Mutex functions
provide for creating, destroying, locking and unlocking mutexes.
These are supplemented by mutex attribute functions that set or
modify attributes associated with mutexes.
Condition variables: Routines that address communications
between threads that share a mutex. Based upon programmer
specified conditions. This group includes functions to create,
destroy, wait and signal based upon specified variable values.
Functions to set/query condition variable attributes are also
included.
Synchronization: Routines that manage read/write locks and
barriers.
Lecture 19
7
Java threads





Threads  a fundamental programming model in Java.
Managed by JVM (Java Virtual Machine).
The method we use in the next example is to implement Runnable
interface
public interface Runnable
{
public abstract void run();
}
When a class implements a Runnable interface it must define a
run() method. The code running when the run() method is invoked
runs as a separate thread.
Two methods:
Start()  start a thread
 Join()  block the calling thread until a thread terminates

Lecture 19
8
Example: Java program for summation of positive
integers from 1 to upper.



The Summation class implements the Runnable interface.
Creation of a thread object  create an instance of a Thread class
pass the constructor a Runnable object
The actual thread creation  use the start() method to

Allocate the memory and initialize the new thread
 Call the run() method to make the thread eligible to run under JVM (Java
Virtual Machine)

When the summation program runs two threads are created:
The parent thread  it starts the execution in the main() method.
 The child thread created by the start() method 
 it begins execution in the run() method of the Summation class.
 it terminates after outputting the result and exits from its run() method.

Lecture 19
9
Lecture 19
10
CPU scheduling

CPU scheduling – the “Running” process either relinquishes the
control of the CPU by itself or it is forced by the scheduler to do so.
Then the scheduler selects a process from those in the ``Ready’’
queue and gives it the control of the CPU and
 Non-preemptive scheduling  the ``Running’’ process decides
by itself to
1.switch from ``Running’’ to ``Waiting’’ or the ``Ready’’ state.
2.Terminates execution
 Preemptive scheduling  the ``Running’’ process is forced to
relinquish the control of the CPU by the scheduler.

CPU burst  the period of time a process is in control of the CPU.
I/O burst  the period of time a process is in a “Waiting” state.

Lecture 19
11
Metrics and objectives of scheduling policies

Two types of systems

Batch processing of jobs
 Interactive, e.g., transaction processing systems

The metrics






Utilization
 ratio of useful time versus total time
Throughput
 number of transactions or jobs per unit of time
Turn around time  the time it takes to complete a job
Response time  the time to get a response at a request
Waiting time
 the time a job or a transaction has to wait before
being processed
The objectives

Maximize: CPU utilization and Throughput
 Minimize: Turn around time, Response time, Waiting time

The objectives can be contradictory!!
Lecture 19
12
Histogram of the CPU burst time
Lecture 19
13
Typical alternations of CPU and I/O bursts
Lecture 19
14