concurrency, processes and threads

26
© 2004, D. J. Foreman 2-1 Concurrency, Processes and Threads

Upload: cricket

Post on 06-Jan-2016

30 views

Category:

Documents


0 download

DESCRIPTION

Concurrency, Processes and Threads. Concurrency. The appearance that multiple actions are occurring at the same time On a uni-processor, something must make that happen A collaboration between the OS and the hardware - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-1

Concurrency, Processes and Threads

Page 2: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-2

ConcurrencyThe appearance that multiple actions are

occurring at the same timeOn a uni-processor, something must make

that happen■ A collaboration between the OS and the

hardwareOn a multi-processor, the same problems

exist (for each CPU) as on a uni-processor

Page 3: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-3

Combines multiplexing types: Space-multiplexing - Physical Memory

Time-multiplexing - Physical Processor

Multiprogramming

Process0Process0 Process1

Process1 Processn Processn …

Page 4: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-4

Multiprogramming-2Multiprogramming defined

■ N programs apparently running simultaneously • space-multiplexed in executable memory• time-multiplexed across the central processor

Why it's desired■ Greater throughput (work done per unit time)■ More work occurring at the same time

Resources required■ CPU■ Memory

Page 5: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-5

The CPUInstruction cycles

■ Access memory and/or registers■ Sequential flow via "instruction register"■ One instruction-completion at a time

• (Pipelines only increase the # of completions per time unit). They are still sequential!

Modes of execution■ Privileged (System)■ Non-privileged (User )

Page 6: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-6

MemorySequential addressing (0 – n)Partitioned

■ System• Inaccessible by user programs

■ User• Partitioned for multiple users

• Accessible by system programs

Page 7: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-7

Processes-1A Process is

■ A running program & its address space

■ A unit of resource management

■ Independent of other processes• NO sharing of memory with other processes

• May share files open at Fork time

One program may start multiple processes, each in its own address space

Page 8: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-8

Operating System

Processes-2 Abstraction

Process-1 Process-n

Memory

CPU

Instruction stream

Data stream

Page 9: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-9

Process & Address Space

Address Space

CodeResources

Resources

Abstract Machine Environment

Stack

DataResources

Page 10: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-10

Processes-3The Process life-cycle

■ Creation• User or scheduled system activation

■ Execution• Running

– Performing instructions (using the ALU)

• Waiting– Resources or Signals

• Ready– All resources available except memory and ALU

■ Termination• Process is no longer available

Page 11: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-11

Processes-4Space multiplexing

■ Each process operates in its own"address space"

■ Address space is a sequence of memory locations (addresses) from 0 to 'n' as seen by the application

■ Process addresses must be "mapped" to real addresses in the real machine

More on this later

Page 12: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-12

Processes-5Time multiplexing

■ Each process is given a small portion of time to perform instructions

■ O/S controls the time per process and which process gets control next• Many algorithms for this

• No rules (from user's/programmer's view) on which process will run next or for how long

• Some OS's dynamically adjust both time and sequence

Page 13: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-13

Processes-7FORK (label)

■ Starts a process running from the labeled instruction – gets a copy of address space

QUIT()■ Process terminates itself

JOIN (count) (an atomic operation)■ Merges >=2 processes■ Really more like

"quit, unless I'm the only process left"

Page 14: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-14

Threads-1 A unit of execution within a process

(often called a lightweight process – an "lwp")also called a "task"

Share address space, data and devices with other threads within the process

Private stack, status (IC, state, etc) Multi-threading

■ >1 thread per process

Limited by system to some max #■ Per system■ Per process

Page 15: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-15

Thread Models

DOS JRE

Classic UNIX WinXX, Solaris, Linux, OS/2

Page 16: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-16

Thread modelsMany to One (n ULT's - 1 KLT)

■ ULT block= process blockOne to One

■ One ULT = distinct Kernel Thread.■ Thread block != process block, so more

concurrency.■ Drawback: kernel is involved (context

switching overhead)Many to Many

■ Time multiplexing: m ULT's >=n KLT's■ True concurrency limited (scheduling ULT's)

Page 17: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-17

Threads-2Several thread API's

■ Solaris: kernel-level threads & pthreads■ Windows: kernel-level threads & pthreads■ OS/2: kernel-level threads■ Posix (pthreads) – full set of functions

• #include <pthread.h> // for C, C++ • Allows porting without re-coding

■ Java threads implemented in JVM, independent of OS support• Like multiprogramming implementation in Win3.1• Uses underlying kernel support where available

Page 18: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-18

Threads-3 Windows (native)

CreateThread( DWORD dwCreateFlags = 0, UINT nStackSize = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL );

Solaris (native) - not discussed here POSIX (Linux, Solaris, Windows)

iret1 = pthread_create( &thread1, NULL, (void*) &print_message_function, (void*) message1);

Pthreads ■ same behavior as POSIX■ Almost identical API as POSIX■ Implemented via Windows API (One to One model)

Page 19: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-19

Threads-4 Advantages of kernel-supported threads:

■ May request resources with or without blocking on the request

■ Blocked thread does NOT block other threads■ Inexpensive context switch■ Utilize MP architecture

Thread library for user threads is in user space■ Thread library schedules user threads onto LWP’s■ LWP’s are:

• implemented by kernel threads

• scheduled by the kernel.

Page 20: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-20

Solaris ThreadsSupports threads at both the kernel and

user levels, + symmetric multiprocessing, and real-time scheduling.

Implements the pthread API, + userlevel threads in a thread library with API’s for thread creation & management based on Solaris threads

Page 21: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-21

Java Thread Creation, Method 1import java.lang.*;

public class myCounter extends Thread {                        public void run() 

//overrides Thread.run                            {                      ....                    }}

■ This creates an extension of the Thread class

Page 22: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-22

Now create the threadpublic class XYZ{

public static void main(String args[]) {

myCounter runner = new myCounter();runner.start(); // this is thread 2System.out.println(“I am the main

thread”);}

}

Page 23: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-23

Java Thread Creation, Method 2import java.lang.*;

public class myCounter2 implements Runnable{                             public void run()                               {                                      System.out.println(“I am a Thread”);

                    }}

■ This is an Instance of the Thread class as a variable of the myCounter2 class – creates an interface

■ Can also extend the myCounter2 class

Page 24: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-24

Now create the threadpublic class Do_it

{ public static void main (String args[]) {

Runnable worker = new myCounter2();

Thread thrd = new Thread (worker);

thrd.start();

System.out.println(“I am the main thread”);

}

}

Page 25: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-25

Java & Threads-3Difference between the two methods

■ Implementing Runnable -> greater flexibility in the creation of the class counter

Thread class also implements the Runnable interface

Page 26: Concurrency, Processes and Threads

© 2004, D. J. Foreman 2-26

Java Thread Managementsuspend() – suspends execution of the

currently running thread.

sleep() – puts the currently running thread to sleep for a specified amount of time.

resume() – resumes execution of a suspended thread.

stop() – stops execution of a thread.