Processes and Threads
We often require an operating system to be able to:
- Interleave execution of several processes to maximise processor utilisation while providing reasonable repsonse time.
- Allocate resources to processes.
- Support interprocess communication and user creation of processes.
Overview of Process Model
Processes
- Also called “task” or “job”.
- Execution of an individual program.
- Owner of resources allocated for program execution.
- Encompasses one or more threads.
Threads
- Unit of execution.
- Can be traced
- List the sequence of instructions that execute.
- Belongs to a process
Multiprogramming
- One physical program counter switches between processes.
- Conceptual model of multiple independent, sequential processes (with a single thread each).
- Only one program active at any instant on CPU (pseudoparallelism).
Implementation of Processes
A processes’ information is stored in a process control block (PCB). PCBs together form a process table.
Example Process Table Entry Fields
|Process Management|Memory Management|File Management|
|–|–|–|
|Registers|Pointer to text segment|Root directory|
|Program counter|Pointer to data segment|Working directory|
|Program status word|Pointer to stack segment|File descriptors|
|Stack pointer||File descriptors|
|Process state||User ID|
|Priority||Group ID|
|Scheduling parameters|||
|Process ID|||
|Parent process|||
|Process group|||
|Signals|||
|Time when process started|||
|CPU time used|||
|Children’s CPU time|||
|Time of next alarm|||
Lifecycle of a Process
Process Creation Causes
- System initialisation:
- Foreground processes (interactive programs).
- Background processes.
- Email server, web server, print server, etc.
- Called a daemon (Unix) or service (Windows).
- Execeution of a process creation system by a running process.
- New login shell for an incoming SSH connection.
- Users request to create a new process.
- Initiation of a batch job.
Process Termination Conditions
- Normal exit (voluntary).
- Error exit (voluntary).
- Fatal error (involuntary).
- Killed by another process (involuntary).
Process/Thread States
- Running (actually using CPU at that instant)
- Blocked (unable to run until some external event happens)
- Ready (runnable; temporarily stopped to let another process run)
Events That Cause Process Transitions
- Ready to Running:
- All other processes have ran enough (scheduler decides to pick this process to run).
- Running to Ready:
- Voluntary
Yield()
.
- End of timeslice (scheduler decides running process has run long enough).
- Running to Blocked:
- Waiting for input:
- Waiting for a timer (alarm signal).
- Waiting for a resource to become available.
- Blocked to Ready:
- Resource on which process was originally waiting on becomes available.
Scheduler
Scheduler decides which of the Ready processes to run. There are various algorithms for scheduling.
Two Queue Algorithm
Multi Queue Algorithm
Thread Model
Thread vs Process
|Per process items|Per thread items|
|-|-|
|Address space|Program counter|
|Global variables|Registers|
|Open files|Stack (local variables)|
|Child processes|State|
|Pending alarms||
|Signals and signal handlers||
|Accounting information||
Thread Usage
|Model|Characteristics|
|-|-|
|Threads|Parallelism, blocking system calls|
|Single-threaded process|No parallelism, blocking system calls|
|Finite-state machine|Parallelism, nonblocking system calls, interrupts|
Why Threads?
- Simpler to program than state machine.
- Less resources than a complete process:
- Cheaper to create and destroy.
- Share resources (especially memory) between them.
- Performance: Threads waiting for I/O can be overlapped with computing threads.
- Note: if all threads are compute bound, then no performance improvement on a uniprocessor.
- Threads can take advantage of parallelism available on machines with multiple processors.