Amoeba OS: Distributed Systems

80
Amoeba Distributed Systems By: Miro, Joan Lou Marie Mante, Santino Abdulrachman, Lucman

description

This was a report that we had on our CS 250 class: OS Principles for MSCS Course in the University of the Philippines.

Transcript of Amoeba OS: Distributed Systems

Page 1: Amoeba OS: Distributed Systems

AmoebaDistributed Systems

By:Miro, Joan Lou Marie

Mante, SantinoAbdulrachman, Lucman

Page 2: Amoeba OS: Distributed Systems

What is Amoeba? Amoeba is a distributed system

Makes a collection of CPUs and I/O equipment act like a single computer.

Runs on a microkernel Has User Transparency

The user logs into the system not a specific machine

When a program is initiated the system decides what machine will run it.

Page 3: Amoeba OS: Distributed Systems

History of Amoeba Originated at the Vrije Universiteit,

Amsterdam. Designed primarily by Andrew S. Tanenbaum

and 3 of his Ph. D Students

1st release of Amoeba was at the year 1983.

Last official update was in 1996.

Page 4: Amoeba OS: Distributed Systems

Research Goals There are four main goals

Transparency Having the collection of computer act like a single system

Parallelism Allowing individual jobs to use multiple CPUs easily

Performance Achieving all of the above in an efficient manner

Distribution Connecting together many machines

Page 5: Amoeba OS: Distributed Systems

Architecture Amoeba was designed with two

assumptions about the hardware in mind: Systems will have a very large number of CPUs. Each CPU will have tens of megabytes of

memory.

All the computing power is located in one or more processor pools.

Page 6: Amoeba OS: Distributed Systems

Shared memory is not required, but if it is present it could be used to optimize message passing by doing memory-to-memory copying instead of sending messages over the network.

Amoeba has been designed to deal with multiple architectures and heterogeneous systems.

Page 7: Amoeba OS: Distributed Systems

If there is a shortage of pool processors, individual processors are timeshared, with new processes being assigned to the most lightly loaded CPUs.

Page 8: Amoeba OS: Distributed Systems

Terminal Second element of the Amoeba architecture. It is through the terminal that the user accesses

the system. Typical terminal – X terminal Alternative terminal – any personal computer

Page 9: Amoeba OS: Distributed Systems

Terminals need not be located in one room. Third element of the Amoeba Architecture –

Specialized Servers E.g. file servers Needs to run on a separate processor.

Page 10: Amoeba OS: Distributed Systems

Services – provided by Servers. Abstract definition of what the server is prepared

to do for its clients.

Page 11: Amoeba OS: Distributed Systems

This is the Amoeba Architecture

Page 12: Amoeba OS: Distributed Systems

Amoeba Microkernel Amoeba consists of two major pieces:

Microkernel Runs on every processor

A collection of servers Provides most of the traditional operating system

functionality

Page 13: Amoeba OS: Distributed Systems

Amoeba Microkernel The Amoeba microkernel runs on all

machines in the system. The same kernel can be used on the pool processors, the terminals (assuming that they are computers and not X terminals), and the specialized servers.

Page 14: Amoeba OS: Distributed Systems

Major tasks of the microkernel Manage processes and threads Provide low-level memory management

support Support communication Handle low-level I/O

Page 15: Amoeba OS: Distributed Systems

Manage Processes and Threads Like most operating systems, amoeba

supports the concept of a process. In addition, Amoeba also supports multiple threads of control within a single address space. A process with one thread is essentially the same as a process in UNIX. Process – has single address space, a set of

registers, a program counter and a stack.

Page 16: Amoeba OS: Distributed Systems

Provide low-level memory management

Threads can allocate and deallocate blocks of memory, called segments.

Segments – can be read and written, and can be mapped into and out of the address space of the process to which the calling thread belongs. Can be used as text, data, stack, etc.

Page 17: Amoeba OS: Distributed Systems

Support Communication Point-to-point communication – based on

the model of a client sending a message to a server, then blocking until the server has sent a reply back.

Other form is group communication. Allows a message to be sent from one source to

multiple destinations.

Page 18: Amoeba OS: Distributed Systems

Manage low-level I/O For each I/O device attached to a machine,

there is a device driver in the kernel. The driver manager all I/O for the device.

Drivers are linked with the kernel and cannot be loaded dynamically.

Page 19: Amoeba OS: Distributed Systems

Both the point-to-point message system and the group communication make use of a specialized protocol called FLIP. FLIP

a network layer protocol and has been designed specifically to meet the needs of distributed computing.

Deals with both unicasting and multicasting on complex internetworks.

Page 20: Amoeba OS: Distributed Systems

Amoeba OS(cont…)

By:

Santino Mante

Page 21: Amoeba OS: Distributed Systems

Objects and Capabilities inAmoeba

Page 22: Amoeba OS: Distributed Systems

Object

Is an encapsulated piece of data upon which certain well-defined operations may be performed

Page 23: Amoeba OS: Distributed Systems

Capabilities

Objects are named and protected by special tickets called capabilities

The server creates an object and returns a capability to the client who issued an RPC

Client uses the capability to identify the object and perform the operations

Page 24: Amoeba OS: Distributed Systems

Capability

Page 25: Amoeba OS: Distributed Systems

Capability

Server Port field- If a client wants to perform an operation to an object it calls a stub procedure that builds a message containing the object’s capability and sends it to the kernel

- Kernel extracts the server port field and looks it up in its cache to locate the machine where the server resides. If its not on the cache then it is located by broadcasting

- Servers are not tied to a machine. When it moves to another machine, it can be accessed through its server port

Page 26: Amoeba OS: Distributed Systems

Capability

Object field

- used by the server to identify which object it should access

Page 27: Amoeba OS: Distributed Systems

Capability

Rights field

- used to determine what operations the client may perform

Page 28: Amoeba OS: Distributed Systems

Capability

Check field

- used for validating the capability

Page 29: Amoeba OS: Distributed Systems

Object Protection

How are objects protected?1) Server picks a random Check field and stores it

both in the new capability and inside its own tables

2) All the rights bits are initially on, and it is this owner capability that is returned to the client

3) to create a restricted capability, a client can pass a capability back to the server along with a bit mask for the new rights

Page 30: Amoeba OS: Distributed Systems

Object Protection

4) Server takes the original check field from its tables, EXCLUSIVE ORs it with the new rights, and then runs the result through a one-way function

5) Server creates a new capability with the same value in the object field but the new rights bits in the rights field and the output of the one-way function in the check field

6) the new capability is then sent back to the caller so that it can be used in another process

Page 31: Amoeba OS: Distributed Systems

Object Protection

Page 32: Amoeba OS: Distributed Systems

Object Protection

7) When the restricted capability comes back to the server, the server sees that it is no longer an owner capability since at least one bit is turned off

8) Server fetches the original random number from its tables, EXCLUSIVE ORs it with the rights field from the capability, and runs the result through the one way function

9) If result agrees with the check field, the capability is accepted as valid

Page 33: Amoeba OS: Distributed Systems

Standard Operations

There are some operations that apply to most objects. Some requires certain right bits while others can be done by anyone

Page 34: Amoeba OS: Distributed Systems
Page 35: Amoeba OS: Distributed Systems

Process Management

Page 36: Amoeba OS: Distributed Systems

Process

A process in amoeba is basically an address space and a collection of threads that run it

A process is an object in amoeba Parent process is given capability for the

child process Child can be suspended, restarted,

signaled or destroyed

Page 37: Amoeba OS: Distributed Systems

Process

Process Management is handled at 3 different levels.

1) Lowest level - Process servers, which are kernel threads running on every machine

2) Middle level - set of library procedures that provide a more convenient interface for user programs

3) Top level - run server which determines where to run the new process

Page 38: Amoeba OS: Distributed Systems
Page 39: Amoeba OS: Distributed Systems

Library Procedures

EXEC

- most important

- has 2 input parameters. Capability of a

process server and the process descriptor

- does an RPC with the specified process

server asking it to run the process

Page 40: Amoeba OS: Distributed Systems

Library Procedures

GETLOAD- returns information about the CPU speed, current load, and amount of memory free at the moment- used by the run server to determine the best place to execute a new process

Page 41: Amoeba OS: Distributed Systems

Library Procedures

STUN

- used to suspend a process

- a process’ parent can suspend it by stunning

it

- 2 kinds of stun are supported: normal and emergency

Page 42: Amoeba OS: Distributed Systems

2 Kinds of STUN

Normal Stun

- process sends a message to the server it is waiting for, saying, in effect: “I have been stunned. Finish your work instantly and send me a reply.” If the server is also blocked, the message is propagated further all the way down the line to the end. The server at the end of the line is expected to reply immediately with a special error message

Page 43: Amoeba OS: Distributed Systems

2 Kinds of STUN

Emergency Stun

- stops the process instantly and does not send any messages to the servers that are currently working for the stunned process

Page 44: Amoeba OS: Distributed Systems

Threads

All threads in a process share the same program text and global data but each has its own stack and stack pointer

Page 45: Amoeba OS: Distributed Systems

Glocal

Name of the type of global variables used by a thread but invisible to other threads

Page 46: Amoeba OS: Distributed Systems

Thread Synchronization

3 methods are provided for thread synchronization

1) Signals

2) Mutex

3) Semaphores

Page 47: Amoeba OS: Distributed Systems

Signals

asynchronous interrupts sent from one thread to another thread in the same process

Page 48: Amoeba OS: Distributed Systems

Mutex

Is like a binary semaphore. It can be in one of two states: locked or unlocked

trying to lock an unlocked mutex causes it to become locked

to lock a locked mutex causes the calling thread to block until another thread unlocks the mutex

Page 49: Amoeba OS: Distributed Systems

Semaphores

specifically a counting semaphore where a counter for a set of available resources is used

Page 50: Amoeba OS: Distributed Systems

Memory Management

Page 51: Amoeba OS: Distributed Systems

Segments

A process can have any number of segments it want to have and can be located wherever it wants in the process’ virtual address space

Segments are not swapped or paged so a process must be entirely memory resident to run. Each segment is stored contiguously in memory

Page 52: Amoeba OS: Distributed Systems

Segments

This design was due to 3 reasons:

1) Performance

2) Simplicity

3) Economics

Page 53: Amoeba OS: Distributed Systems

Segments

When a segment is created, the caller gets back a capability for it.

This capability is used for reading and writing the segment and for all the other calls involving segment

Page 54: Amoeba OS: Distributed Systems

Segments

Because segments can be read and written, it is possible to construct a main memory file server.

1) Server creates a segment as large as it can (this segment will be used as a simulated disk)

2) Server then formats the segment as a file system, putting in whatever data structures it needs to keep track of files

3) After that it is open for business, accepting requests from clients

Page 55: Amoeba OS: Distributed Systems

Mapped Segments

Virtual address space in amoeba are constructed from segments. When a process is started, it must have at least one segment. Once it is running, a process can then created additional segments and map them into its address space at any unused virtual address

Page 56: Amoeba OS: Distributed Systems
Page 57: Amoeba OS: Distributed Systems

Amoeba OS(cont…)

By:

Lucman Abdulrachman

Page 58: Amoeba OS: Distributed Systems

Communication in Amoeba Amoeba supports two forms of

communication: RPC, using point-to-point message passing and group communication.

Page 59: Amoeba OS: Distributed Systems

Remote Procedure Call RPC Primitives: 1. get_request – indicates a server’s

willingness to listen on a port.2. put_reply – done by a server when it has

a reply to send.3. trans – send a message from client to

server and wait for the reply.  

Page 60: Amoeba OS: Distributed Systems

Group Communication in Amoeba

CreateGroup Create a new group and set its parameters

JoinGroup Make the caller a member of a group

LeaveGroup Remove the caller from a group

SendToGroup Reliably send a message to all members of a group

ReceiveFromGroup

Block until a message arrives from a group

ResetGroup Initiate recovery after a process crash

Page 61: Amoeba OS: Distributed Systems

The Amoeba Reliable Broadcast Protocol 1. The user process traps to the kernel, passing it the

message.2. The kernel accepts the message and blocks the user

process.3. The kernel sends a point-to-point message to the

sequencer.4. When the sequencer gets the message, it allocates the

next available sequence number, puts the sequence number in a header field reserved for it, and broadcasts the message (and sequence number).

5. When the sending kernel sees the broadcast message, it unblocks the calling process to let it continue execution.

Page 62: Amoeba OS: Distributed Systems

System Structure

A

SKernel

A

Kernel

A

Kernel

Sequencer enabled Sequencer disabled

Application programs

Broadcast network

Page 63: Amoeba OS: Distributed Systems

An example

A

Last = 24

A

SLast=24

A

Last=24

A

Last=23

AM

M

M25

B

C

history

M25

M25

M25

Sequencer machine

M25

M25

Request for 24

buffered

Page 64: Amoeba OS: Distributed Systems

Sender’s action for sending The sender sends a message to the sequencer and starts a

timer: (a) the broadcast comes back before the timer runs out.

(normal case). the sender just stops the timer. (b) the broadcast has not come back before the timer

expires. (either the message or the broadcast has been lost). the sender retransmits the message. if the original message is lost, no harm is done. if the sender missed the broadcast, the sequencer will

detect the retransmission as a duplicate and tell the sender everything is all right.

Page 65: Amoeba OS: Distributed Systems

(c ) The broadcast comes back before the timer expires, but it is the wrong broadcast. This occurs when two processes attempt to broadcast simultaneously.

If message A gets to the sequencer first, and is broadcast. A sees the broadcast and unblocks its application program. However, B sees A’s broadcast and realizes it has failed to go first. B will accept A’s broadcast and wait.

Page 66: Amoeba OS: Distributed Systems

Sequencer’s action If a Request for Broadcast arrives: (a) check to see if the message is a

retransmission. If so, inform the sender that the broadcast has been done.

(b) if the message is new, assign the next sequence number to it, and increment the sequencer counter by 1.

The message and its identifier are stored in a history buffer, and the message is then broadcast.

Page 67: Amoeba OS: Distributed Systems

Sender’s action for receiving When the sender receives a broadcast: (a) if the sequence number is 1 higher than

the most recent one (normal case). No broadcast has been missed.

(b) if the sequence number is more than 1 higher (a broadcast has been missed), the sender will send a message to the sequencer asking for the lost broadcast.

Page 68: Amoeba OS: Distributed Systems

Management of the history buffer If the history buffer fills up, if the sequencer knows that all

machines have received broadcasts, say, 0 through 23, correctly, it can delete these from its history buffer. There are several mechanisms to discover this information:

(a) each Request for Broadcast message sent to the sequencer carriers a piggybacked acknowledgement, k, meaning that all broadcasts up to and including k have been correctly received.

(b) the sequencer can broadcast a Request for Status message asking the number of the highest broadcast received in sequence.

Page 69: Amoeba OS: Distributed Systems

Two methods for doing reliable broadcasting

A S BAB S1

2 2

2

22

2 2

2

22

11

1

11

1. Message sent to the sequencer2. The sequencer broadcasts it

1. A broadcast M2. S broadcasts Accept

Page 70: Amoeba OS: Distributed Systems

In method 1, each message appears in full on the network twice. Each user machine is interrupted only once.

In method 2, the full message appears only once on the network. Each machine is interrupted twice.

Page 71: Amoeba OS: Distributed Systems

Summary of the protocol This protocol allows reliable broadcasting to

be done on an unreliable network in just over two messages per reliable broadcast. Each broadcast is indivisible, and all applications receive all messages in the same order, no matter how many are lost.

Page 72: Amoeba OS: Distributed Systems

Fault tolerance The protocol is also fault tolerant. When a processor crashes, sooner or later, some

kernel will detect that the crashed machine are not being acknowledged. The kernel will mark the crashed processor as dead and initiates a recovery.

In phase 1, one process is elected as coordinator. In phase 2, the coordinator rebuilds the group and

brings all the other processes up to date.

Page 73: Amoeba OS: Distributed Systems

The protocol is also fault tolerant

40 43 4441 40 X

40 43 4441 40 X

44 44 4444 44 X

0 1 2 3 4 5

coordinator coordinator Sequencer dies

coordinator Dead sequencer

new sequencer

0 1 2 3 4 5

0 1 2 3 4

(a)

(b)

(c )

(a) The sequencer crashes (b) A coordinator is selected (c) Recovery

Page 74: Amoeba OS: Distributed Systems

How does the coordinator get any message it has missed if the sequencer has crashed?

The solution lies in the value of k. If k is 0 (non-fault tolerant), only the sequencer maintains a history buffer.

If k >0, k+1 machines maintain an up-to-date history buffer. If k machines crash, there is still one left to supply the coordinator with any messages it needs.

Page 75: Amoeba OS: Distributed Systems

How to implement? In method 2, when the sequencer sees a

message, M, that was just broadcast, it does not immediately broadcast an Accept message. Instead, it waits until the k lowest-numbered kernels have acknowledged that they have seen and stored it. Now k+1 machines have stored M in their history buffers.

Page 76: Amoeba OS: Distributed Systems

The Fast Local Internet Protocol Amoeba uses a custom protocol called

FLIP for actual message transmission. The protocol handles both RPC and group communication and is below them in the protocol hierarchy.

FLIP is a network layer protocol.

Page 77: Amoeba OS: Distributed Systems

A

RPC Group

FLIP layer

Page 78: Amoeba OS: Distributed Systems

The Bullet Server

Create Create a new file; optionally commit it as well

Read Read all or part of a specified file

Size Return the size of a specified file

Modify Overwrite n bytes of an uncommitted file

Insert Insert or append n bytes to an uncommitted file

Delete Delete n bytes from an uncommitted file

Page 79: Amoeba OS: Distributed Systems

The Directory Server Create Create a new directory

Delete Delete a directory or an entry in a directory

Append Add a new directory entry to a specified directory

Replace Replace a single directory entry

Lookup Return the capability set corresponding to a specified name

Getmasks Return the rights masks for the specified entry

Chmod Change the rights bits in an existing directory entry

Page 80: Amoeba OS: Distributed Systems

The Replication Server The Run Server The Boot Server The TCP/IP Server Disk server I/O server A time-of-day server A random number server Swiss Army Knife server