OS Review: Thread
Download
Report
Transcript OS Review: Thread
OS Review
Processes and Threads
Chi Zhang
[email protected]
1
Process Concept
Process – a program in execution;
process execution must progress in
sequential fashion.
A process includes
program counter
stack
data section
2
Process State
As a process executes, it changes state
new: The process is being created.
running: Instructions are being executed.
waiting: The process is waiting for some event to occur.
ready: The process is waiting to be assigned to a process.
terminated: The process has finished execution.
3
Process Control Block (PCB)
Pointer to the next
process
4
CPU Switch From Process to
Process
5
Context Switch
When CPU switches to another process,
the system must save the state of the old
process and load the saved state for the
new process.
Context-switch time is overhead; the
system does no useful work while
switching.
Time dependent on hardware support.
6
System Calls
System calls provide the interface between a running
program and the operating system.
7
Single and Multithreaded Processes
Code, Data and Files are shared
8
Benefits
Responsiveness
User interaction in parallel with data retrieval
Utilization of MP Architectures
Resource Sharing between Threads (vs.
Process)
E.g. Synchronization by accessing shared data
Economy (vs. Process)
If the task is the same, why not share the code?
In Solaris 2, creating a process is about 30 times
slower than threads. Context switch threads is about
5 times slower.
9
User Threads
Thread management done by user-level
threads library
A blocking system call will cause the entire
process to block
OS is unaware of threads
The kernel cannot schedule threads on
different CPUs.
Example: Pthread, a POSIX standard (IEEE
1003.1c) API for thread creation and
synchronization.
10
Many-to-One Model (User Threads)
11
Kernel Threads
Supported by the Kernel
OS manages threads
Slower to create and manage because of
system calls
A blocking system call will not cause the entire
process to block.
The kernel can schedule threads on different
CPUs.
12
Many-to-Many Model (Solaris 2)
Allows many user level threads to be mapped to
many (fewer) kernel threads.
Allows the operating system to create a sufficient
number of kernel threads.
13
The thread library (user level) multiplexes (schedules) userlevel threads on the pool of LWPs for the process.
Only user-level threads currently connected to an LWP
accomplish work
For one process, one LWP is needed for every thread that
14
may block concurrently in system calls for multiple I/O threads
Java Threads
class Command implements Runnable {
String commandLine;
Command(String commandLine) {
this.commandLine = commandLine;
}
public void run() {
// Do what commandLine says to do
// yield () the thread pause temporally
}
}
15
Java Threads
String line = inputStream.readLine();
int numberOfCommands = // count how many comands
there are on the line
Thread t[] = new Thread[numberOfCommands];
for (int i=0; i<numberOfCommands; i++) {
String c = // next command on the line
t[i] = new Thread(new Command(c));
t[i].start();
}
for (int i=0; i<numberOfCommands; i++) {
t[i].join(); // wait until the end of t[i]
}
Also
16