Presentation is loading. Please wait.

Presentation is loading. Please wait.

Concurrency, Processes and Threads

Similar presentations


Presentation on theme: "Concurrency, Processes and Threads"— Presentation transcript:

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

2 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 On a multi-processor, the same problems exist (for each CPU) as on a uni-processor © 2004, D. J. Foreman

3 Multiprogramming … Combines multiplexing types:
Space-multiplexing - Physical Memory Time-multiplexing - Physical Processor Process0 Process1 Processn © 2004, D. J. Foreman

4 Multiprogramming-2 Multiprogramming Reason why desired
N programs apparently running simultaneously space-multiplexed in executable memory time-multiplexed across the central processor Reason why desired Greater throughput (work done per unit time) More work occurring at the same time Resources required CPU Memory © 2004, D. J. Foreman

5 The CPU Instruction cycles Modes of execution
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 ) © 2004, D. J. Foreman

6 Memory Sequential addressing (0 – n) Partitioned System User
Inaccessible by user programs User Partitioned for multiple users Accessible by system programs © 2004, D. J. Foreman

7 Processes-1 A 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 © 2004, D. J. Foreman

8 Processes-2 Abstraction
Memory Process-1 Process-n Instruction stream CPU Data stream Operating System © 2004, D. J. Foreman

9 Process & Address Space
Resources Data Resources Code Resources Stack Abstract Machine Environment Address Space © 2004, D. J. Foreman

10 Processes-3 The Process life-cycle Creation Execution Termination
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 © 2004, D. J. Foreman

11 Processes-4 Space multiplexing More on this later
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 © 2004, D. J. Foreman

12 Processes-5 Time 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 © 2004, D. J. Foreman

13 Processes-7 FORK (label) QUIT() JOIN (count) (an atomic operation)
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" © 2004, D. J. Foreman

14 Threads-1 A unit of execution within a process (like 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 © 2004, D. J. Foreman

15 Thread Models JRE DOS Classic UNIX WinXX, Solaris, Linux, OS/2
© 2004, D. J. Foreman

16 Threads-2 Several 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 © 2004, D. J. Foreman

17 Threads-3 Windows (native) POSIX (Linux, Solaris, Windows)
CreateThread( DWORD dwCreateFlags = 0, UINT nStackSize = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); POSIX (Linux, Solaris, Windows) iret1 = pthread_create( &thread1, NULL, (void*)&print_message_function, (void*) message1); © 2004, D. J. Foreman

18 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. © 2004, D. J. Foreman

19 Notes on Java The JVM uses monitors for mutual exclusion
provides wait and notify for cooperation © 2004, D. J. Foreman

20 Java & Threads-1 Thread creation – 2 ways
import java.lang.*; public class Counter extends Thread {                         public void run()  //overrides Thread.run                            {                       ....                     } } extension from the Thread class © 2004, D. J. Foreman

21 Java & Threads-2 import java.lang.*; public class Counter implements Runnable {         Thread T;                                 public void run()                               {                                       ....                     } } Instance of the Thread class as a variable of the Counter class – creates an interface Can still extend the Counter class © 2004, D. J. Foreman

22 Java & Threads-3 Difference between the two methods
Implementing Runnable, -> greater flexibility in the creation of the class counter Thread class also implements the Runnable interface © 2004, D. J. Foreman

23 Wait & Signal - semaphores
Classical definitions Wait - P (s) // make me wait for something DO WHILE (s<=0) END s=s-1 // when s becomes > 0, decrement it Signal - V (s) // tell others: my critical job is done s=s+1 These MUST appear as ATOMIC operations to the application © 2004, D. J. Foreman


Download ppt "Concurrency, Processes and Threads"

Similar presentations


Ads by Google