Department of Computer Science and Engineering
Program : Software Engineering
Distributed Software System (SEng4305)
Compiled By: Sufian K (MSc)
12/11/2023 1
Chapter 3
Processes
12/11/2023 2
Content
Recall of Processes
Introduction of threads
Threads Implementation
Threads in Distributed Systems
Clients
Servers
Code migration
3
Recall of Processes
• Communication can be takes place between processes.
• A process is a program in/under execution i.e. active program.
– a program that is currently being executed on one of the
operating system's virtual processors.
– The process is an instance of program running on a computer
– It is the entity that can be assigned to and executed on a
processor.
• Multiple processes may be concurrently sharing the same resource (i.e.
CPU and other hardware resources) is made transparent.
• From OS perspective, management and scheduling of processes is
important.
4
Processes…..
• Virtual processors
– Created by OS to execute or running a different program
– The OS has Process table to keep track of virtual processors
✓ containing entries to store CPU register values, memory maps,
open files, accounting information, privileges, etc.
• OSs ensure that processes are independent and transparent
– Do not affect each other’s correctness
– Resource sharing is transparent
5
Processes…..
2N
▪ A process includes:
✓ program counter Aux iliary
regions
✓ code segment
✓ stack segment Stack
✓ data segment
▪ Process = Address Space Heap
+ Single thread of control Text
0
Address space
6
Costs of Processes
• Processes are costly b/c creating a process requires creation of an
entire
✓ new address space, initializing memory segment, copying
instructions to text segment, initializing stack
• Switching between processes is costly as well
✓ Saving CPU context, modify registers of the memory
management unit, swapping processes (if number of
processors are larger than what can fit in main memory)
7
Process Creation
• Principal events that cause process creation
System initialization
Execution of a process creation system call
User request to create a new process
Initiation of a batch job.
8
Process Termination
▪ Conditions which terminate processes
Normal exit (voluntary)
Error exit (voluntary)
Fatal error (involuntary)
Killed by another process (involuntary)
9
Process States
• The following are possible process states;
10
Context Switch
• Inter-process communication is expensive: need context switching
– When the CPU switching from one process to the other is
known as context switching.
• 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.
11
Cooperating processes
• Cooperating processes need to share information (data). Since each
process has its own address space, operating system mechanisms are
needed to let processes exchange information.
• Two paradigms for cooperating processes.
• Shared Memory
• OS enables two independent processes to have a shared memory
segment in their address spaces.
• Message-passing
• OS provides mechanisms for processes to send and receive
messages.
12
Threads and their Implementation
13
1
4
Introduction
• How are processes and threads related?
• Process tables(PCBs) are used to keep track of processes
• There are usually many processes executing concurrently
– processes should not interfere with each other;
– sharing resources by processes is transparent
• This concurrency transparency has a high price; allocating resources
for a new process and context switching take time.
• A thread also executes independently from other threads; but no
need of a high degree of concurrency transparency thereby resulting
in better performance.
Threads
• A thread is a single sequence stream within in a process.
– because threads have some of the properties of processes, they
are sometimes called lightweight processes.
• It is an execution of part of process on virtual processor.
• In a process, threads allow multiple executions of streams.
• A thread of execution is
– the smallest sequence of programmed instructions that can be
managed independently by a schedular which is typically a part of
the OS.
• Very little overheads (thread switching is easy (it use process memory)
• Can provide performance gains
15
Thread Structure….
• Process is used to group resources together and
✓ threads are the entities scheduled for execution on the CPU.
• The thread has a program counter that keeps track of which
instruction to execute next.
✓ It has registers, which holds its current working variables.
✓ It has a stack, which contains the execution history.
• Although a thread must execute in some process,
the thread and its process are different concepts and
can be treated separately.
16
Thread Structure….
• Process is unit of allocation
– E.g. resource, privileges etc.
• Thread is unit of execution
– e.g. PC, Stack pointer, register etc.
• Note
✓ Each threads belongs to only one process and
✓ Each process has one or more threads
17
Thread Structure….
• What threads add to the process model?
✓ It allow multiple executions to take place in the same process
environment, to a large degree independent of one another.
✓ This called Multithread
• Having multiple threads running in parallel in one process is similar to
having multiple processes running in parallel in one computer.
18
Thread Structure….
• A process has an address space (containing program text and
data) and a single thread of control, as well as other resources
such as open files, child processes, accounting information, etc.
• Each thread has its own program counter, registers, stack, and
state;
— but all threads of a process share address space, global
variables and other resources such as open files, etc.
19
Difference between Process and Thread
Comparison Basis Process Thread
Definition A process is a program under execution A thread is a lightweight process that can
i.e. an active program. be managed independently by a scheduler
Context switching Processes require more time for context Threads require less time for context
time switching as they are heavier. switching as they are lighter than
processes.
Memory Sharing Processes are totally independent and A thread may share some memory with its
don’t share memory. peer threads.
Communication Communication between processes Communication between threads requires
requires more time than between threads. less time than between processes.
Blocked If a process gets blocked, remaining If a user level thread gets blocked, all of its
processes can continue execution. peer threads also get blocked.
Resource Processes require more resources than Threads generally need less resources than
Consumption threads. processes.
Dependency Individual processes are independent of Threads are parts of a process and so are
each other. dependent.
Data and Code Processes have independent data and code A thread shares the data segment, code
sharing segments. segment, files etc. with its peer threads.
Treatment by OS All the different processes are treated All user level peer threads are treated as a
separately by the operating system. single task by the operating system.
Time for creation Processes require more time for creation. Threads require less time for creation.
Time for termination Processes require more time for Threads require less time for termination.
termination. 20
Cont.…
• Similarities between Process and Thread
– Like processes threads share CPU and only one thread is running
at a time.
– Like processes thread can create children.
– Like a traditional process, a thread can be in any one of several
states: running, blocked, ready or terminated.
✓ Running thread currently has the CPU and it active
✓ Blocked is waiting for other thread to unblock it
✓ Ready is scheduled to run and
✓ Terminated thread is one that has exited
21
Cont.…
• Similarities between Process and Thread
– Like process threads have Program Counter, Stack, Registers and
State.
– Threads can be terminated in one of two ways:
✓Exit voluntary when it’s finish its job or it can be killed from
outside.
• Threads can be used in both
✓ distributed and non distributed systems
22
Thread Usage in Non-distributed Systems
• Single threaded process
• Whenever a blocking system call is executed- the whole process is
blocked.
• Would be able to service only one client at a time.
• Run with two threads- Microsoft Excel Spreadsheet
One handling interaction with the user
One for updating the spreadsheet
23
Thread Usage in Non-distributed Systems
Multithreads Process
• Exploit parallelism in the case of multiprocessor system.
✓ Shared data is stored in shared memory.
✓ Each CPU run different thread.
• Also useful in large application
✓ Collection of cooperating programs, each to be executed by a
separate process.
✓ IPC in UNIX system
24
Cont.….
• In non distributed systems,
✓ threads can be used with shared data instead of processes to
avoid context switching overhead inter process.
Context switching as the result of IPC
25
Cont.…
• Drawbacks IPCs:- Communication between two process requires
extensive context switching ➔ kernel mode <-> user mode
Needs kernel intervention (due to separate address spaces)
Multiple context switches
Context switches are costly (expensive)
26
2
7
Cont.…
• Thread Usage –Why do we need threads?
• e.g., a word processor has different parts for
✓ interacting with the user
✓ formatting the page as soon as changes are made
✓ timed savings (for auto recovery)
✓ spelling and grammar checking, etc.
• Simplifying programming model since many activities are going on at once
more or less independently
• Easier to create and destroy than processes since they do not have any
resources attached to them
• Performance improves by overlapping activities if there is too much I/ O; i. e.,
to avoid blocking when waiting for input or doing calculations, say in a
spreadsheet
• Invented to allow parallelism is possible in a multiprocessor system
Thread Implementation
• Threads are generally provided (implemented) in the form of a
thread package.
✓ the package contains operations to create and destroy a
thread, operations on synchronization variables such as
mutexes and condition variables between them.
• There are two main approaches of implement a threads package;
✓ Construct a thread library that is executed entirely in user
mode (the OS is not aware of threads)
✓ Implement them in the OS’s kernel
28
Thread Implementation….
▪ User-level threads (User Managed)
✓ Implemented by thread library & kernel knows nothing about them
✓ Programmer of thread library write it’s code to synchronize threads
and context switch them.
✓ Thread creation, destruction and context switching are cheap.
✓ Switching threads context can be done with a few instruction-
synchronizing when entering a section of shared data.
✓ Only the value of CPU register need to be changed
✓ No need to change memory map
29
Thread Implementation….
▪ Drawback is how blocking system calls are implemented.
✓ the invocation of blocking system call will block the entire
process belonging to the threads.
▪ Kernel-Level Threads(OS Managed Threads)
✓ Let the kernel be aware of threads and schedule them
✓ Expensive for thread operations such as creation and deletion
since each requires a system call.
✓ Solution: use a hybrid form of user-level and kernel-level
threads, called lightweight process (LWP)
30
Difference b/n User level threads and Kernel level threads
User Level Thread Kernel Level Thread
User thread are implemented by users. Kernel threads are implemented by OS.
OS doesn’t recognized user level
Kernel threads are recognized by OS.
threads.
Implementation of Kernel thread is
Implementation of User threads is easy.
complex.
Context switch time is less. Context switch time is more.
Context switch requires no hardware Context switch requires hardware
support. support.
If one kernel thread performs blocking
If one user level thread performs
operation, then another thread within
blocking operation, then entire process
the same process can continue
will be blocked.
execution.
31
Combining kernel-level and user-level threads
• This known as light weight process.
• There can be several light weight process (LWP) per process
✓ run on kernel space
32
Lightweight Process (LWP)
• A hybrid approach
Lightweight process runs in context of single process.
• Reside in kernel
• System also offers user-level threads
All operations occur in user mode
run on user space
Creating and destroying thread
• Thread package can be shared by multiple LWPs
• LWP is created by kernel and given its own stack
33
Light-Weight Process
Thread table : keep track of
the current set of threads –
shared by LWP
• Several advantages
•Cheap, will not block entire process, extends to multiprocessing
environment
34
Threads in Distributed Systems
▪ Multithreaded Clients
• Consider a Web browser; fetching different parts of a page
can be implemented as a separate thread,
✓ each opening its own TCP connection to the server
✓ each can display the results as it gets its part of the page
• Parallelism can also be achieved for replicated servers
✓ since each thread request can be forwarded to separate
replicas
35
Cont.…
❖ Multithreaded Servers: Servers can be constructed in three ways
▪ Single-threaded process:- it gets a request, examines it, carries it
out to completion before getting the next request. Performance loss
due to single threading.
▪ Threads: threads are more important for implementing servers
✓ e.g., a file server, the dispatcher thread reads incoming requests
for a file operation from clients and passes it to an idle worker
thread
▪ Finite-state machine
✓ Achieve high performance through Parallelism
✓ If threads are not available, it gets a request, examines it, tries
to fulfill the request from cache, else sends a request to the file
system 36
Cont.…
Model Characteristics
Single-threaded server No parallelism, easy of blocking system calls
(give up performance)
Threads Parallelism, blocking system calls (thread only)
Finite-state machine Parallelism, non blocking system calls
37
3
Cont.….
8
Anatomy of Clients
• Two issues: User interfaces and client-side software for distribution
transparency
• User Interfaces
✓ To create a convenient environment for the interaction of a human
user and a remote server; e.g. mobile phones with simple displays
and a set of keys
✓ GUIs are most commonly used
✓ The X Window System (X Sample ) as an example
✓ it has the X kernel: the part of the OS that controls the terminal
(monitor, keyboard, pointing device like a mouse) and is hardware
dependent.
3
9
Cont.….
• Client-Side Software for Distribution Transparency
✓ In addition to the user interface, parts of the processing and
data level in a client-server application are executed at the
client side.
— an example is embedded client software for ATMs, cash
registers, etc.
— Moreover, client software can also include components to
achieve distribution transparency
✓e.g., replication transparency
— Assume a distributed system with replicated servers; the
client proxy can send requests to each replica.
4
0
Servers and Design Issues
▪ Server just listen for the request
✓ Ensure the request is served and wait for the next incoming request
▪ General Design Issues: How to organize servers?
▪ Servers is organized in several ways:-
✓ Iterative server
— The server itself handles the request and
— Return the response to the requesting client
✓ Concurrent server
— Pass the request to separate thread/process (not handle by itself)
— Wait for next incoming request
— Example of multithreaded server.
4
1
Servers and Design Issues
• Stateless server
✓ Ignore the information on the state of its client
✓ Can change the server state without informing the client
✓ Example Web Server
• Stateful server
✓ Maintains information on its clients
✓ Table containing (client, file)
4
2
Servers and Design Issues
General Design Issues: Where do clients contact a server?
• Using endpoints or ports at the machine where the server is running
where each server listens to a specific endpoint.
• How do clients know the endpoint of a service?
• Globally assign endpoints for well-known services; e.g. FTP is on TCP
port 21, HTTP is on TCP port 80
Code Migration
• So far, communication was concerned on passing data. We may pass
programs, even while running and in heterogeneous systems
• In DS entire process was moved from one machine to another
• Code migration also involves moving data as well: when a program
migrates while running, its status, pending signals, and other
environment variables such as the stack and the program counter also
have to be moved.
• Moving a running process is costly in term of performance.
– So, Ship(move) part of the client application to the server and send
only the result across the network
✓ Improve performance and more flexible.
43
Cont.…
• The principle of dynamically configuring a client to communicate
to a server,
– The client first fetches the necessary software, and
– then invokes the server.
44
Cont.…
Reasons for Migrating Code
▪ To improve computing performance; move processes from heavily-
loaded to lightly-loaded machines (load balancing)
▪ To improve communication time: move a client application that
performs many database operations to a server if the database resides
on the server; then send only results to the client
▪ To exploit parallelism (for non-parallel programs): e.g., copies of a
mobile program (called a mobile agent is called in search engines)
moving from site to site searching the Web
45
Models for Code Migration
• Code migration doesn’t only mean moving code;
— in some cases, it also means moving the execution status of a
program, pending signals, and other parts of the execution
environment
• Process for code migration consists of three segments;
• Code Segment
• The part that contains the set of instructions that make up the
program that is being executed.
• Resource Segment
• Reference to external resource needed by the process i.e..
Printers, files, devices etc.
• Execution Segment
• Store current execution state of a process, such as private data,
the stack, and the program counter.
46
47