Download Main Goal Description System

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts

Computer security wikipedia , lookup

Distributed operating system wikipedia , lookup

Transcript
Distributed Computing Systems
CSCI 6900/4900
Review
• Definition & characteristics of distributed
systems
• Distributed system organization
• Design goals
–
–
–
–
–
Resource availability to users
Transparency
Openness
Scalability
Security and privacy
Scalability Techniques
• Hiding communication latencies
– Asynchronous communication
– Reduce amount of data transmitted
• Distribution
– Spreading work across system
• Caching and replication
– Make copies of data and services
• Balance load
– Avoid hot spots
Scaling Techniques
1.4
The difference between letting:
a) a server or
b) a client check forms as they are being filled
Scaling Techniques (2)
1.5
An example of dividing the DNS name space into zones.
Hardware Classification
• Based on address space
– Multiprocessor
– Multicomputer
• Based on communication infrastructure
– Bus
– Switched
• Based on uniformity
– Homogenous
– Heterogeneous
Hardware Concepts
1.6
Different basic organizations and memories in distributed computer
systems
Multiprocessors (1)
• Key Property: All CPUs have direct access to shared memory
• Coherent memory: Reads and writes are sequential
1.7
A bus-based multiprocessor.
• Scalability
• Ensuring coherency
Multiprocessors (2)
Crossbar switch
Omega switching network
Homogeneous Multicomputer Systems
• Also known as System Area Networks (SANs)
• Bus-based (Shared multi-access N/W such as Ethernet)
• Switch-based (Massively Parallel Processors, Cluster of
Workstations)
Grid
Hypercube
Heterogeneous Multicomputer Systems
• Most widely used
• Individual computers can vary widely
• Some node might be multiprocessor machines or
homogenous multicomputer machines
• Hierarchical systems (multicomputer systems on
top of existing multicomputer systems).
• Nodes lack global view
• Cannot assume identical or even similar
performance
• Providing transparency, performance &
scalability are key challenges.
Software Concepts
• Functionalities
– Resource managers
– Hiding intricacies and heterogeneity
• Two kinds of operating systems
– Tightly coupled (distributed operating system)
– Loosely coupled (network operating system)
• Middleware
– Providing transparency for loosely coupled systems
OS for Distributed Systems
System
Description
Main Goal
DOS
Tightly-coupled operating system for
multi-processors and homogeneous
multicomputers
Hide and
manage
hardware
resources
NOS
Loosely-coupled operating system for
heterogeneous multicomputers (LAN
and WAN)
Offer local
services to
remote clients
Additional layer atop of NOS
Middleware
implementing general-purpose services
Provide
distribution
transparency
Uniprocessor Operating Systems
• Virtualize physical devices (manages devices, protects users)
• Two modes (User, Kernel)
• Two kinds (Monolithic, microkernel)
1.11
Separating applications from operating system code through
a microkernel.
Multiprocessor Operating Systems
• Similar in many aspects to uni-processor systems
• Main extension is how shared memory access is
handled
– Guard against simultaneous access to provide
consistency
• Two primitives
– Semaphores
• Two atomic primitives (UP and DOWN)
– Monitors
Monitors
• Borrowed from programming languages
• Has data and procedures
• One process can execute at any point of time
monitor Counter {
private:
int count = 0;
public:
int value() { return count;}
void incr () { count = count + 1;}
void decr() { count = count – 1;}
}
Monitors (2)
• Monitors can be used to conditionally block
processes
• Producers/consumers scenario
monitor Counter {
private:
int count = 0;
void decr() {
int blocked_procs = 0;
if (count ==0) {
blocked_procs = blocked_procs + 1;
condition unblocked;
wait (unblocked);
public:
blocked_procs = blocked_procs – 1;
int value () { return count;}
}
void incr () {
else
if (blocked_procs == 0)
count = count – 1;
count = count + 1;
else
signal (unblocked);
}
}
}