concurrency, processes and threads
Post on 08-Jan-2016
37 Views
Preview:
DESCRIPTION
TRANSCRIPT
© 2004, D. J. Foreman 2-1
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
© 2004, D. J. Foreman 2-3
Combines multiplexing types: Space-multiplexing - Physical Memory
Time-multiplexing - Physical Processor
Multiprogramming
Process0Process0 Process1
Process1 Processn Processn …
© 2004, D. J. Foreman 2-4
Multiprogramming-2Multiprogramming
■ 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 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 )
© 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
© 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
© 2004, D. J. Foreman 2-8
Operating System
Processes-2 Abstraction
Process-1 Process-n
Memory
CPU
Instruction stream
Data stream
© 2004, D. J. Foreman 2-9
Process & Address Space
Address Space
CodeResources
Resources
Abstract Machine Environment
Stack
DataResources
© 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
© 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
© 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
© 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"
© 2004, D. J. Foreman 2-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 2-15
Thread Models
DOS JRE
Classic UNIX WinXX, Solaris, Linux, OS/2
© 2004, D. J. Foreman 2-16
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
© 2004, D. J. Foreman 2-17
Threads-3
Windows (native)■ 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 2-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 2-19
Notes on JavaThe JVM
■ uses monitors for mutual exclusion■ provides wait and notify for cooperation
© 2004, D. J. Foreman 2-20
Java & Threads-1 Thread creation – 2 ways
1. import java.lang.*;public class Counter extends Thread { public void run()
//overrides Thread.run { .... }}
extension from the Thread class
© 2004, D. J. Foreman 2-21
Java & Threads-22. 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 2-22
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
© 2004, D. J. Foreman 2-23
Wait & Signal - semaphoresClassical 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
top related