Presentation is loading. Please wait.

Presentation is loading. Please wait.

CGS 3763 Operating Systems Concepts Spring 2013 Dan C. Marinescu Office: HEC 304 Office hours: M-Wd 11:30 - 12:30 AM.

Similar presentations


Presentation on theme: "CGS 3763 Operating Systems Concepts Spring 2013 Dan C. Marinescu Office: HEC 304 Office hours: M-Wd 11:30 - 12:30 AM."— Presentation transcript:

1 CGS 3763 Operating Systems Concepts Spring 2013 Dan C. Marinescu Office: HEC 304 Office hours: M-Wd 11:30 - 12:30 AM

2 Last time:  Threads Today:  Pthreads  Java threads  CPU scheduling Next time  CPU Scheduling Reading assignments  Chapters 4 and 5 of the textbook Lecture 19 – Wednesday, February 20, 2013 2Lecture 19

3 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 193

4 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 194

5 5 UNIX PROCESSTHREADS WITHIN A UNIX PROCESS

6 Lecture 196 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.

7 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 197

8 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 198

9 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 199

10 10

11 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 1911

12 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 1912

13 Histogram of the CPU burst time Lecture 1913

14 Typical alternations of CPU and I/O bursts Lecture 1914


Download ppt "CGS 3763 Operating Systems Concepts Spring 2013 Dan C. Marinescu Office: HEC 304 Office hours: M-Wd 11:30 - 12:30 AM."

Similar presentations


Ads by Google