concurrency, processes and threads
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 PresentationTRANSCRIPT
![Page 1: Concurrency, Processes and Threads](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/1.jpg)
© 2004, D. J. Foreman 2-1
Concurrency, Processes and Threads
![Page 2: Concurrency, Processes and Threads](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/2.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/3.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/4.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/5.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/6.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/7.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/8.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/9.jpg)
© 2004, D. J. Foreman 2-9
Process & Address Space
Address Space
CodeResources
Resources
Abstract Machine Environment
Stack
DataResources
![Page 10: Concurrency, Processes and Threads](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/10.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/11.jpg)
© 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
![Page 12: Concurrency, Processes and Threads](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/12.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/13.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/14.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/15.jpg)
© 2004, D. J. Foreman 2-15
Thread Models
DOS JRE
Classic UNIX WinXX, Solaris, Linux, OS/2
![Page 16: Concurrency, Processes and Threads](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/16.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/17.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/18.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/19.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/20.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/21.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/22.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/23.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/24.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/25.jpg)
© 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](https://reader036.vdocument.in/reader036/viewer/2022062309/56813b3f550346895da41410/html5/thumbnails/26.jpg)
© 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.