Chapter 3, Process
Chapter 3, Process
Introduction
Communication takes place between processes
a process is a program in execution
From OS perspective, management and scheduling of
processes is important
Other important issues arise in distributed systems
Multi threading to enhance performance by overlapping
communication and local processing
How are clients and servers organized and server design issues
process or code migration to achieve scalability and to
dynamically configure clients and servers
1
3.1 Threads and their Implementation
how are processes and threads related?
• Process tables or 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
• What is the difference b/n thread and process?
• 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 2
Class discussion
1. Process scheduling
2. PCBs
3. why context switching
3
Process 1 Process 2 Process 3
processes each with one thread one process with three threads
4
5
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.
6
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.
7
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
8
In non distributed systems, threads can be used with shared data
instead of processes to avoid context switching overhead inter
process communication (IPC)
9
Thread Implementation
• threads are usually provided 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
• two approaches of constructing a thread package
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
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
10
• solution: use a hybrid form of user-level and kernel-level threads,
called lightweight process (LWP)
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
11
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
12
3.2 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
13
b. 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
16
Reasons for Migrating Code
• To improve performance; move processes from heavily-loaded
to lightly-loaded machines (load balancing)
• 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)
• 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)
18
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
• execution can be by
• 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)
• 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
19
Migration can be
21
Types of Process-to-Resource Bindings
• 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
• 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
22
Resource-to-Machine Bindings
• Unattached Resources: can be easily moved with the migrating
program (such as data files associated with the program)
23
Assignment Two
1. Homogeneous Ds
2. Heterogeneous Ds
24