Chapter 3 - Process
Chapter 3 - Process
Processes
1
What is process mean?
A process is a program in execution.
• The execution of a process must progress in a
sequential fashion.
A process is more than the program code.
• It also includes the current activity, as represented
by the value of the program counter and the
contents of the processor’s registers.
As a process executes, it changes state
2
What is thread?
A flow of execution through the process code, with
its own program counter, system register and stack.
Each thread belongs to exactly one process and no
thread can exist outside a process.
Each thread represents a separate flow of control.
A thread of execution is the smallest unit of processing that
can be scheduled by an OS
3
How are processes and threads related?
The implementation of threads and process differs from one
OS to another, but in most cases, a thread is contained
inside a process.
Multiple threads can exist within the same process and
share resources such as memory,while different
processes do not share these resources.
4
Threads and their Implementation
Process tables 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
5
What is the difference b/n thread and process?
6
Cont…
threads can be used in both distributed and
non distributed systems
Threads in Non distributed Systems
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
7
Process 1 Process 2 Process 3
processes each with one thread one process with three threads
8
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.
9
Threads take turns in running
Threads allow multiple executions to take place in the same process
environment, called multi threading
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.
10
1.Simplifying the programming model: since many activities
are going on at once more or less independently
2.They are easier to create and destroy than processes since
they do not have any resources attached to them
3.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
4. Real parallelism is possible in a multiprocessor system
11
In non distributed systems, threads can be used with shared data
instead of processes to avoid context switching overhead inter process
communication (IPC)
12
Thread Implementation
threads are usually provided in the form of a thread package
• the package contains operations to create and destroy a thread,.
A. construct a thread library that is executed entirely in user mode
(the OS is not aware of threads)
cheap to create and destroy threads; just allocate and free memory
context switching can be done using few instructions; store and
reload only CPU register values
disadvantage: invocation of a blocking system call will block the
entire process to which the thread belongs and all other threads in
that process
13
B. implement them in the OS’s kernel
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)
14
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
Multithreaded Servers
servers can be constructed in three ways
A. single-threaded process it gets a request, examines it, carries it
out to completion before getting the next request
15
B. 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
C. finite-state machine
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
Model Characteristics
Single-threaded process: No parallelism, blocking system calls
Threads Parallelism: blocking system calls (thread only)
Finite-state machine : Parallelism, non blocking system cal ls
Distributed system 1 1/ 26 / 2022
18
Anatomy of Clients
Two issues: user interfaces and client-side software for
distribution transparency
A. 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 (or simply X) 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
17
B . Client-Side Software for Distribution Transparency
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
In addition to the user interface, parts of the processing and data level
18
Servers and Design Issues
General Design Issues
A. How to organize servers?
Iterative server
the server itself handles the request and returns the
result
Concurrent server
it passes a request to a separate process or thread and
waits for the next incoming request; e.g., a multithreaded
server; 19
B. 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
20
Code Migration
so far, communication was concerned on passing data
we may pass programs, even while running and in
heterogeneous systems
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
21
Reasons for Migrating Code
To improve performance; move processes from heavily-loaded to
lightly-loaded machines (load balancing)
To reduce communication: 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 nonparallel 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
22
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
A process consists of three segments: code segment (set of
instructions), resource segment (references to external resources such
as files, printers, ...), and execution segment (to store the current
execution state of a process such as private data, the stack, the
program counter 25
Alternatives for code migration
weak versus strong mobility
is it sender-or receiver-initiated
is it executed at the target process or in a separate process (for
weak mobility); migrate or clone process (for strong mobility)
Weak Mobility
Transfer only the code segment and may be some initialization data; in
this case a program always starts from its initial stage, e.g. Java Applets
the target process (in its own address space like in Java Applets) but the
target process and local resources must be protected (security) or
by a separate process; still local resources must be protected (security)
24
Strong Mobility (or process migration )
Transfer code and execution segments; helps to migrate a process in
execution; stop execution, move it, and then resume execution from
where it is stopped
25
CONT…
28
Summary of models of code migration
27
Types of Process-to-Resource Bindings
1. Binding by identifier (the strongest): a resource is referred
by its
identifier; the process requires that resource;
• e.g., a URL to refer to a Web page or an FTP server referred
by its Internet (IP) address
2. Binding by value (weaker): when only the value of a
resource is needed; in this case another resource can provide
the same value;
• e.g., standard libraries of programming languages such as C
or Java which are normally locally available, but their location
in the file system may vary from site to site 28
3. Binding by type (weakest): a process needs a resource of a specific
type; reference to local devices, such as monitors, printer
Resource-to-Machine Bindings
Unattached Resources: can be easily moved with the migrating program
(such as data files associated with the program)
Fastened Resources: such as local databases and complete Web
sites; moving or copying may be possible, but very costly
Fixed Resources: intimately bound to a specific machine or environment
such as local devices and cannot be moved 29
THANK
YOU!!!
30