Part 2: Processes and Threads
• Process Concept
• Process Scheduling
• Operation on Processes
• Interprocess Communication
• Threads
Operating Systems
2.1 Part 2 Processes and Threads
Process Concept
• Process: A program in execution; process
execution must progress in a sequential
fashion
• An operating system executes a variety of
processes
– Batch system – jobs
– Time-sharing system – user programs &
commands
• Textbook uses the terms job and process
almost interchangeably (Job = Process)
Operating Systems
2.2 Part 2 Processes and Threads
Process in Memory
Base + Limit (parameters and local variables
in a function)
Recall
base and
limit (all dynamically allocated variables,
registers e.g., a=new int[10])
from
(global parameters)
memory
protection (code section, program)
? Base
Operating Systems
2.3 Part 2 Processes and Threads
Process State
As a process executes, it changes state
1. New: The process is being created
2. Running: Instructions are being
executed
3. Waiting: The process is waiting for I/O
or event
4. Ready: The process is ready to run, but
is waiting to be assigned to the CPU
Operating Systems
2.4 Part 2 Processes and Threads
Diagram of Process State
Transitions
Timer interrupt
Timer interrupt is used in
multiprogramming systems to switch
Operating Systems between ready
2.5 processes Part 2 Processes and Threads
Process Control Block (PCB)
Keeps information associated with each
process
1. Pointer to other PCBs (PCBs are
maintained in a queue/list structure)
2. Process state
3. Process number (process id)
4. Program counter (pointer to the next
instruction)
5. CPU registers
6. Process priority (used in process
scheduling)
7. Memory management information (e.g.,
Operating Systems base and limit 2.6
register values)Part 2 Processes and Threads
Process Control Block (PCB)
Operating Systems
2.7 Part 2 Processes and Threads
PCB and Processes in Main
Memory
Memory area for OS (kernel space)
PCB1 PCB2 PCB3 PCB4
Base+ Limit
Base
Memory regions for user processes
(user space)
Operating Systems
2.8 Part 2 Processes and Threads
Part 2: Processes and Threads
• Process Concept
• Process Scheduling
• Operation on Processes
• Interprocess Communication
• Threads
Operating Systems
2.9 Part 2 Processes and Threads
Context Switch Between
Processes
timer
timer
Operating Systems
2.10 Part 2 Processes and Threads
Context Switch
• When CPU switches to another
process, the system must save the
context (i.e., information) of the old
process and load the saved context
for the new process
• Context switch time is overhead: The
system does NO useful work while
switching between processes
Operating Systems
2.11 Part 2 Processes and Threads
Process Scheduling Queues
• Job queue: Set of all processes with
the same state in the system
– Ready queue (processes in ready
state), device queue (processes
in waiting state and waiting for a
specific I/O device), etc.
• All the queues are stored in main
memory (kernel memory space)
• Process migrates between queues
when its state2.12
Operating Systems
changes Part 2 Processes and Threads
Ready Queue And Various I/O Device
Queues
Operating Systems
2.13 Part 2 Processes and Threads
Process Schedulers
• We need multiple schedulers for different
purposes
1. Long-term scheduler (or job scheduler):
Selects processes from disk and loads
them into main memory for execution
2. Short-term scheduler (or CPU
scheduler): Selects from among the
processes that are ready to execute,
and allocates the CPU to one of them
3. Medium-term scheduler:
When the system load is heavy, swaps out
a partially executed process from memory
to hard disk
Operating Systems
2.14 Part 2 Processes and Threads
Process Schedulers (Cont.)
• Short-term scheduler is invoked
frequently (e.g., 100 milliseconds) in a
multiprogrammed system for
responsiveness and efficiency
purposes
• Long-term scheduler is invoked
infrequently (e.g., seconds or minutes)
• The degree of multiprogramming is
initially controlled by the long-term
scheduler, and thereafter
Operating Systems
2.15 by the
Part 2 Processes and Threads
Part 2: Processes and Threads
• Process Concept
• Process Scheduling
• Operation on Processes
• Interprocess Communication
• Threads
Operating Systems
2.16 Part 2 Processes and Threads
Process Creation
• Parent process creates children
processes, which, in turn create other
processes, forming a tree of processes
(fork)
Root process
Console 1 Console 2 swap flush
Background processes
Unzip Search Two user
command consoles
Operating Systems
2.17 Part 2 Processes and Threads
Process Creation (Cont.)
• Two possible execution orders
1. Parent and children execute
concurrently (and independently)
2. Parent waits until all children
terminate (wait(),join())
• Examples
– Many web browsers nowadays fork a
new process when we access a new
page in a “tab”
– OS may create background processes
for monitoring and maintenance tasks
Operating Systems
2.18 Part 2 Processes and Threads
Process Termination
• Two possible ways to terminate a process
– Exit: Process executes last statement and
asks the OS to delete it
A child may output return data to its
parent
Process resources are de-allocated by
the OS
– Abort: Parent may terminate execution of
children processes at any time
Child has exceeded allocated resources
Task assigned to child is no longer
required
Parent is exiting
Operating Systems
2.19 Part 2 Processes and Threads
Part 2: Processes and Threads
• Process Concept
• Process Scheduling
• Operation on Processes
• Interprocess Communication
• Threads
Operating Systems
2.20 Part 2 Processes and Threads
Cooperating Processes
• An independent process cannot affect or be
affected by the execution of other
processes
• A cooperating process on the other hand
can affect or be affected by the execution
of other processes
– Such processes have to communicate
with each other to share data
– Two models of Inter-Process
Communication (IPC)
Message passing
Shared memory
Operating Systems
2.21 Part 2 Processes and Threads
IPC Models
User space
Kernel
space
Message Passing Shared Memory
Operating Systems
2.22 Part 2 Processes and Threads
IPC – Message Passing
• Processes communicate and synchronize
their actions without resorting to shared
variables
• Two operations (system calls) are required
– send(message) – message size fixed or
variable
– receive(message)
• If two processes wish to communicate,
they need to
– Establish a communication link between
them
Operating Systems
2.23 Part 2 Processes and Threads
Direct vs. Indirect Message
Passing
• Direct: Processes must name each other
explicitly
– send (P,message): Send a message to
process P
– receive(Q,message): Receive a message
from process Q
• Indirect: Messages are sent to or received
from mailboxes (also referred to as ports)
– Mailbox is an object into which messages
are placed and removed (like a queue)
– Primitives are:
send(A,message): Send a message to
mailbox A
Operating Systems
2.24 ): ReceiveParta2 Processes and Threads
receive(A,message
Producer-Consumer Process
Paradigm
• Classical paradigm for cooperating
processes
– Producer process produces
information that is consumed by a
consumer process
– Shared buffer used for storing
information
• Two models for shared buffer
1. unbounded-buffer places no
practical limit on the size of the
Operating Systems
2.25 Part 2 Processes and Threads
Producer-Consumer: Bounded
Buffer
//declare a mailbox with capacity of B messages (buffer
size B)
Does this example use direct
or indirect communication
void producer(void)
{
message m; void consumer(void)
while (1) { {
//pre-processing… message m;
while (1) {
while(mailbox is full) wait;
send(mailbox, m); while(mailbox is empty
} receive(mailbox, m);
} //post-processing…
}
}
Operating Systems
2.26 Part 2 Processes and Threads
Part 2: Processes and Threads
• Process Concept
• Process Scheduling
• Operation on Processes
• Interprocess Communication
• Threads
Operating Systems
2.27 Part 2 Processes and Threads
Threads
• This part is for self-learning
• About Labs
– Nachos uses term “thread”, but means
“process”
– All concepts and mechanisms that we
learnt about processes are also
applicable to Nachos threads
Thread control block = Process control
block
Thread state = Process state
System calls: fork, exit, etc.
Operating Systems
2.28 Part 2 Processes and Threads
Threads
• Overview
• Single vs Multithreading Process
• Benefits of threads
• Types of threads
• Multithreading models
Operating Systems
2.29 Part 2 Processes and Threads
Overview
• A thread (or lightweight process) is a basic unit
of CPU utilization; it consists of:
– Thread id
– Program counter
– Register set
– Stack space
• A thread shares with its peer threads in the
same process:
– Code and data sections
– Operating system resources (open files,
etc.)
• A traditional or heavyweight process is an
Operating Systems
2.30 Part 2 Processes and Threads
Single vs Multithreaded
Processes
Operating Systems
2.31 Part 2 Processes and Threads
Advantage of Multithreaded
Processes
• In a multithreaded process, while one
thread is blocked and waiting, a second
thread can run
– Cooperation of multiple threads in the
same process results in higher
throughput
WORD
Operating Systems
2.32 Part 2 Processes and Threads
Example: Multithreaded Server
Operating Systems
2.33 Part 2 Processes and Threads
Thread Implementation Models
• Paradox
– Allow users to implement an arbitrary
number of threads, BUT
– OS kernel can support a limited number of
threads due to resource constraints
• Solution: Two layers of abstraction
– User threads (logical): Created in user space
Allows users to create as many threads as
they want
– Kernel threads (physical): Created in kernel
space
Slower to create and manage than user
threads
Resources are eventually allocated in
kernel threads
Operating Systems
2.34 Part 2 Processes and Threads
Multithreading Models
• Model that defines the mapping
between user threads and kernel
threads
– Many-to-One
– One-to-One
– Many-to-Many
• Why is there no One-to-Many
mapping?
– Wastage of OS resources to map
Operating Systems
a single user
2.35thread to many
Part 2 Processes and Threads
Many-to-One Mapping
I/O or System call
Blocked
Disadvantage: A blocked user thread, will
also block other user threads mapped to
the same kernel thread
Operating Systems
2.36 Part 2 Processes and Threads
One-to-One Mapping
• Each user-level thread maps to a unique
kernel thread
– Examples: Windows 95/98/NT/2000, OS/2,
Linux
• Provides more concurrency than many-to-
one model
• Disadvantages:
– Creating a user thread requires creating
the corresponding kernel thread
– May create too many kernel threads
Operating Systems
2.37 Part 2 Processes and Threads
Many-to-Many Mapping
• Allows many user level threads to be
mapped to many kernel threads (see next
slide)
– Examples: Solaris 2, Windows NT/2000
• Allows the operating system to create a
sufficient number of kernel threads
• Does not have the disadvantages of one-
to-one and many-to-one models
• Disadvantage: Not easy to decide the
mapping
Operating Systems
2.38 Part 2 Processes and Threads
Many-to-Many Mapping
Operating Systems
2.39 Part 2 Processes and Threads
Advanced Readings
• Beej's Guide to Unix Interprocess
Communication
– [Link]
– Very good introduction on the IPC
implementation inside Unix
• Tutorials on how to use thread
libraries:
– POSIX pthreads,
[Link]
– Windows Process and Thread Functions
[Link]
ndows/desktop/ms684847(v=vs.85).aspx
Operating Systems
2.40 Part 2 Processes and Threads