Priv.-Doz. Dr. Stefan Bosse
Universität Bremen, FB Mathematik &
19.3.2018
sbosse@uni-bremen.de |
Question: How can complex systems be implemented with simple concepts?
You understand basic principles of a Distributed Operating System and the distinction from Networked Operating Systems
You understand the basic challenges and features of distributed computing and distributed file systems
You will be able to understand how Clouds of the future can be designed and used
Some practical programming lessons should demonstrate simple network communication and distribution of computation
A Distributed system is a collection of loosely coupled processors or computers interconnected by a communication network (Multicomputers)
A Parallel system is a collection of strongly coupled processors (Multiprocessors)
Historically based on Network Operating Systems (e.g. Linux Clusters):
Users are aware of multiplicity of machines!
telnet
, ssh
), Remote Desktop (Windows), File Transfer (FTP
, SSH
), Network Filesystem (NFS
)
A Distributed Operating System hides machines:
Users are not aware of multiplicity of machines!
Resource == Object = {file, device, processor, memory, ..}
Filesystems handle mostly the organization and structuring of data
UNIX: Local devices and processes are represented by virtual files
Handle all objects in the filesystem
Provide name spaces and name mapping service: resource ⇔ name
Plan9: All objects are files!
Amoeba: File storage (data) and Organization (directories) separated!
Objects are handled by servers → Object-orientated approach!
|
|
Question: What makes the Amoeba OS unique and different from UNIX or Windows?
Amoeba hardware consists of four components:
|
But all computers and components can be generic: Big server, desktop computer, mobile device (smartphone!), Embedded Computer (Raspberry PI!) |
Amoeba is an object-orientated system using clients and servers. But the roles client/server are not fixed. A server can be a client, too!
RPC : request → message → Server → message → reply
UNIX: Objects (files) are handled (identified) with paths
Amoeba: All objects (files, processors, processes, devices, ..) are specified by and handled with single capabilities!
A set of objects are handled by servers (e.g. file server, processor server, ..)
Servers are processes that can be executed on any machine!
An object (e.g. file) can be represented by different capabilities allowing only a sub-set of operations (read, write, execute, delete) → restricted capabilities
The check field encrypts the entire capability using a one-way function and contains the rights field
Only servers can restrict capabilities: They use a private key to create a public key (check field)
Server “listen” on private port, but clients access servers with encrypted public port → No server faking possible!
The file server. This server only stores file data as linear blocks. A committed file is atomic and cannot be modified → Robustness!
The name space server. It provides a directory graph with tables mapping names on capabilities. The directories are stored as Bullet files. More than one file server can be used in replication mode.
The process server. It controls the execution of programs and supports process snapshot migration from one to another machine.
Long story - short conclusion
Distributed Systems require communication by using messages.
Network communication is slow compared with memory access
Major goal of DOS: Speedup by Parallelization!!
But communication reduces the degree of Parallelization!
The Amoeba OS poses a very simple and clean design princpile to compose large-scale distributed systems
It is an object-orientated OS with servers managing objects
Objects (files, screens, processes, ..) are accessed by using capabilities and Remote Procedure Calls
Servers are identified by their ports - not by their location!
Robustness: File server stores files in contiguous blocks. After a file is committed it is immutable!
A directory-based naming service provides name → capability mapping
Robustness: File and directory servers can be redundant
Using JavaScript and node.js
Group work!
You will get a JavaScript code template that provide basic operations/primitives:
You will be able to construct and study a very simple DOS based on the Amoeba principles using IP networks / the Internet. Use the provided demo application and set-up a small distributed network in your group and start the hello world service. Question: What is an IP address? How was it assigned to your computer? How do you find your IP address? UNIX/Windows?
Create a schematic diagram of your current network and explain the services that are provided. Read reference [1]/Ch.7 for more information.
If your program communicates with servers (e.g., the hello world server) on a remote computer it has to have the IP address of the remote machine. But you uses a capability? How can the mapping Server Port ↔ IP be resolved? How is it done in the original Amoeba OS?