Transcript Slide 1
OPERATING SYSTEM SUPPORT
OPERATING SYSTEM
SUPPORT
From Chapter 6 of Distributed Systems
Concepts and Design,4th Edition,
By G. Coulouris, J. Dollimore and T. Kindberg
Published by Addison Wesley/Pearson
Education June 2005
1
OPERATING SYSTEM SUPPORT
Topics
Introduction
The Operating System Layer
Processes and Threads
Operating System Architecture
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
2
OPERATING SYSTEM SUPPORT
Introduction
Many distributed operating systems have
been investigated, but there are none in
general/wide use.
But network operating system are in wide
use for various reasons both technical and
non-technical.
Users have much invested in their
application software; they will not adopt a
new operating system that will not run their
applications.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
3
OPERATING SYSTEM SUPPORT
Introduction
The second reason against the adoption of
distributed operating system is that users
tend to prefer to have a degree of
autonomy for their machines, even in a
organization.
Unix and Windows are two examples of network
operating systems.
Those have a networking capability built into
them and so can be used to access remote
resources using basic services such as rlogin
and telnet.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
4
OPERATING SYSTEM SUPPORT
Introduction
The combination of middleware and
network operating systems provides an
acceptance balance between the
requirement of autonomy and network
transparency.
The network operating systems allows
users to run their favorite word processor
and other standalone applications.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
5
OPERATING SYSTEM SUPPORT
Introduction
Middleware enables users to take
advantage of services that become
available in their distributed system.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
6
OPERATING SYSTEM SUPPORT
The Operating System Layer
Applications, services
Middleware
OS: kernel,
li braries &
servers
OS1
Processes, threads,
communicati on, ...
OS2
Processes, threads,
communicati on, ...
Computer &
network hardware
Computer &
network hardware
Node 1
Platform
Node 2
Figure 1. System layers
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
7
OPERATING SYSTEM SUPPORT
The Operating System Layer
Figure 1 shows how the operating system
layer at each of two nodes supports a
common middleware layer in providing a
distributed infrastructure for applications
and services.
Kernels and server processes are the
components that manage resources and
present clients with an interface to the
resources.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
8
OPERATING SYSTEM SUPPORT
The Operating System Layer
The OS facilitates:
Encapsulation
Protection
Concurrent processing
Invocation mechanism is a means of
accessing an encapsulated resource.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
9
OPERATING SYSTEM SUPPORT
The Operating System Layer
Proc ess manager
Communic ati on
manager
T hread manager
Memory manager
Supervis or
Figure 2. Core OS functionality
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
10
OPERATING SYSTEM SUPPORT
The Operating System Layer
Figure 2 shows the core OS components:
Process manager
Thread manager
Memory manager
Communication manager
Supervisor
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
11
OPERATING SYSTEM SUPPORT
Processes and Threads
Process
A process consists of an execution
environment together with one or more
threads.
A thread is the operating system
abstraction of an activity.
An execution environment is the unit of
resource management: a collection of local
kernel managed resources to which its
threads have access.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
12
OPERATING SYSTEM SUPPORT
Processes and Threads
An execution environment consists of :
An address space
Thread synchronization and communication
resources (e.g., semaphores, sockets)
Higher-level resources (e.g., file systems,
windows)
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
13
OPERATING SYSTEM SUPPORT
Processes and Threads
Threads
Threads are schedulable activities
attached to processes.
The aim of having multiple threads of
execution is :
To maximize degree of concurrent execution
between operations
To enable the overlap of computation with
input and output
To enable concurrent processing on
multiprocessors.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
14
OPERATING SYSTEM SUPPORT
Processes and Threads
Threads can be helpful within servers:
Concurrent processing of client’s requests
can reduce the tendency for servers to
become bottleneck.
• E.g. one thread can process a client’s request
while a second thread serving another request
waits for a disk access to complete.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
15
OPERATING SYSTEM SUPPORT
Processes and Threads
Processes vs. Threads
Threads are “lightweight” processes,
processes are expensive to create but
threads are easier to create and destroy.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
16
OPERATING SYSTEM SUPPORT
Processes and Threads
Threads programming
Thread programming is concurrent
programming.
Java provides methods for creating,
destroying and synchronizing threads.
The Java thread class includes the
constructor and management methods
listed in Figure 3.
The thread and object synchronization
methods are in Figure 4.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
17
OPERATING SYSTEM SUPPORT
Processes and Threads
Thread(ThreadGroup group, Runnable target, String name)
Creates a new thread in the SUSPENDED state, which will belong to group and be
identified as name; the thread will execute the run() method of target.
setPriority(int newPriority), getPriority()
Set and return the thread’s priority.
run()
A thread executes the run() method of its target object, if it has one, and otherwise its
own run() method (Thread implements Runnable).
start()
Change the state of the thread from SUSPENDED to RUNNABLE.
sleep(int millisecs)
Cause the thread to enter the SUSPENDED state for the specified time.
yield()
Enter the READY state and invoke the scheduler.
destroy()
Destroy the thread.
Figure 3. Java thread constructor and management methods
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
18
OPERATING SYSTEM SUPPORT
Processes and Threads
thread.join(int millisecs)
Blocks the calling thread for up to the specified time until thread has terminated.
thread.interrupt()
Interrupts thread: causes it to return from a blocking method call such as sleep().
object.wait(long millisecs, int nanosecs)
Blocks the calling thread until a call made to notify() or notifyAll() on object wakes
the thread, or the thread is interrupted, or the specified time has elapsed.
object.notify(), object.notifyAll()
Wakes, respectively, one or all of any threads that have called wait() on object.
Figure 4. Java thread synchronization calls
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
19
OPERATING SYSTEM SUPPORT
Processes and Threads
Programs can manage threads in groups.
Every thread belongs to one group
assigned at thread creation time.
thread groups are useful to shield various
applications running in parallel on one
Java Virtual Machine (JVM).
A thread in one group cannot perform
management operations on a thread in
another group.
E.g., an application thread may not interrupt
a system windowing (AWT) thread.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
20
OPERATING SYSTEM SUPPORT
Processes and Threads
Thread synchronization
The main difficult issues in multi-threaded
programming are the sharing of objects
and the techniques used for thread
coordination and cooperation.
Each thread’s local variables in methods
are private to it.
Threads have private stack.
Threads do not have private copies of
static (class) variables or object instance
variables.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
21
OPERATING SYSTEM SUPPORT
Processes and Threads
Java provides the synchronized keyword
for thread coordination.
any object can only be accessed through
one invocation of any of its synchronized
methods.
an object can have synchronized and nonsynchronized methods.
example
synchronized addTo() and removeFrom()
methods to serialize requests in worker pool
example.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
22
OPERATING SYSTEM SUPPORT
Processes and Threads
Threads can be blocked and woken up
The thread awaiting a certain condition calls
an object’s wait() method.
The other thread calls notify() or notifyAll()
to awake one or all blocked threads.
example
When a worker thread discovers that there
are no requests to process, it calls wait() on
the instance of Queue.
When the I/O thread adds a request to the
queue, it calls the queue’s notify() method
to wake up the worker.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
23
OPERATING SYSTEM SUPPORT
Processes and Threads
The Java synchronization methods are
given in Figure 4.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
24
OPERATING SYSTEM SUPPORT
Client and server with threads
Thread 2 makes
requests to server
Thread 1
generates
results
Input-output
Receipt &
queuing
T1
Requests
N threads
Client
Server
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
25
OPERATING SYSTEM SUPPORT
Operating System Architecture
A key principle of distributed systems is
openness.
The major kernel architectures:
Monolithic kernels
Micro-kernels
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
26
OPERATING SYSTEM SUPPORT
Operating System Architecture
An open distributed system should make it
possible to:
Run only that system software at each
computer that is necessary for its
particular role in the system architecture.
For example, system software needs for
PDA and dedicated server are different.
Loading redundant modules wastes
memory resources.
Allow the software (and the computer)
implementing any particular service to be
changed independent of other facilities.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
27
OPERATING SYSTEM SUPPORT
Operating System Architecture
Allow for alternatives of the same service
to be provided, when this is required to suit
different users or applications.
Introduce new services without harming
the integrity of existing ones.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
28
OPERATING SYSTEM SUPPORT
Operating System Architecture
A guiding principle of operating system
design:
The separation of fixed resource management
“mechanisms“ from resource management
“policies”, which vary from application to
application and service to service.
For example, an ideal scheduling system would
provide mechanisms that enable a multimedia
application such as videoconferencing to meet its
real-time demands while coexisting with a nonreal-time application such as web browsing.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
29
OPERATING SYSTEM SUPPORT
Operating System Architecture
The kernel would provide only the most basic
mechanisms upon which the general resource
management tasks at a node are carried out.
Server modules would be dynamically loaded as
required, to implement the required resourced
management policies for the currently running
applications.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
30
OPERATING SYSTEM SUPPORT
Operating System Architecture
Monolithic Kernels
A monolithic kernel can contain some
server processes that execute within its
address space, including file servers and
some networking.
The code that these processes execute is
part or the standard kernel configuration.
(Figure 5)
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
31
OPERATING SYSTEM SUPPORT
Operating System Architecture
S4
.......
S1
S1
Key:
Server:
S2
S3
S2
S3
S4
.......
.......
Monol ithic Kernel
Kernel c ode and data:
Microkernel
Dynamic al ly l oaded server program:
Figure 5. Monolithic kernel and microkernel
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
32
OPERATING SYSTEM SUPPORT
Operating System Architecture
Microkernel
The microkernel appears as a layer
between hardware layer and a layer
consisting of major systems.
If performance is the goal, rather than
portability, then middleware may use the
facilities of the microkernel directly.
(Figure 6)
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
33
OPERATING SYSTEM SUPPORT
Operating System Architecture
Middleware
Language
support
subsystem
Language
support
subsystem
OS emulation
subsystem
....
Microkernel
Hardware
The microkernel supports middleware via subsystems
Figure 6. The role of the microkernel
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
34
OPERATING SYSTEM SUPPORT
Operating System Architecture
Monolithic and Microkernel comparison
The advantages of a microkernel
Its extensibility
Its ability to enforce modularity behind
memory protection boundaries.
Its small kernel has less complexity.
The advantages of a monolithic
The relative efficiency with which operations
can be invoked because even invocation to
a separate user-level address space on the
same node is more costly.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
35
OPERATING SYSTEM SUPPORT
Operating System Architecture
Hybrid Approaches
Pure microkernel operating system such
as Chorus & Mach have changed over a
time to allow servers to be loaded
dynamically into the kernel address space
or into a user-level address space.
In some operating system such as SPIN,
the kernel and all dynamically loaded
modules grafted onto the kernel execute
within a single address space.
Couloris,Dollimore and Kindberg Distributed Systems: Concepts & Design Edn. 4 , Pearson Education 2005
36