Ameoba Ameoba Designed by: Designed by: Prof Andrew S. Tanenbaum Prof Andrew S. Tanenbaum at Vrija University at Vrija University since 1981 since 1981
Dec 19, 2015
AmeobaAmeoba
Designed by: Designed by:
Prof Andrew S. TanenbaumProf Andrew S. Tanenbaum
at Vrija Universityat Vrija University
since 1981since 1981
Ameoba Design Ameoba Design PhilosophyPhilosophy
Computers are rapidly becoming Computers are rapidly becoming cheaper and fastercheaper and faster
Widespread use and increasing Widespread use and increasing performance in computer networksperformance in computer networks
Need for the ability to deal with Need for the ability to deal with physically distributed hardware physically distributed hardware while using logically centralized while using logically centralized softwaresoftware
Ameoba Design Ameoba Design Philosophy Cont.Philosophy Cont.
Provide users with the illusion of a Provide users with the illusion of a single powerful timesharing single powerful timesharing system from a collection of system from a collection of machinesmachines
Ameoba Distributed Ameoba Distributed System GoalsSystem Goals
SmallSmall Simple to useSimple to use Scalable to large numbers of Scalable to large numbers of
processorsprocessors Degree of Fault-ToleranceDegree of Fault-Tolerance High PerformanceHigh Performance Possibility for parallelismPossibility for parallelism Transparent to Users Transparent to Users
Difference between Difference between Ameoba and Network OSAmeoba and Network OS
User logs into User logs into system as a wholesystem as a whole
System decides System decides best place to run best place to run programprogram
Single, system-Single, system-wide object wide object naming servicenaming service
User logs into one User logs into one specific machinespecific machine
Program executes Program executes on home machine on home machine unless specifiedunless specified
Files local unless Files local unless a remote file a remote file system mounted system mounted
Ameoba Network OS
System ArchitectureSystem Architecture
WorkstationsWorkstations Processor PoolProcessor Pool Specialized Servers (file, data Specialized Servers (file, data
base, ect)base, ect) GatewayGateway
System ArchitectureSystem Architecture
Processor Pool Workstations
Gateway
WAN
Specialized Servers(file, data base)
WorkstationsWorkstations
One Per UserOne Per User Users carry out editing and other Users carry out editing and other
taskstasks Can be Suns, IBM PC/AT clones, Can be Suns, IBM PC/AT clones,
and X terminalsand X terminals
Processor PoolProcessor Pool
Group of CPU’sGroup of CPU’s CPU can be dynamically allocated CPU can be dynamically allocated
and returned to the pooland returned to the pool Offers possibility of doing many Offers possibility of doing many
jobs in paralleljobs in parallel
Specialized ServersSpecialized Servers
Directory ServersDirectory Servers File Servers and ReplicatesFile Servers and Replicates Boot ServersBoot Servers Other Specialized FunctionsOther Specialized Functions
GatewaysGateways
Link Amoeba systems at different Link Amoeba systems at different sites into a single, uniform systemsites into a single, uniform system
Isolate Amoeba from peculiarities Isolate Amoeba from peculiarities of the protocols that must be used of the protocols that must be used over WAN’s over WAN’s
Ameoba KernalAmeoba Kernal
All Amoeba machines run the All Amoeba machines run the same kernalsame kernal
Provides multithreaded process, Provides multithreaded process, communication services, and little communication services, and little elseelse
Goal is to keep kernal as small as Goal is to keep kernal as small as possible to enhance reliability and possible to enhance reliability and allow OS to run as user processesallow OS to run as user processes
ObjectsObjects
Ameoba is object-basedAmeoba is object-based Uses capabilities for accessing Uses capabilities for accessing
objectsobjects System can be viewed as a System can be viewed as a
collection of objectscollection of objects Both hardware and software Both hardware and software
objects existobjects exist
CapabilitiesCapabilities
Key that allows holder to perform some Key that allows holder to perform some (not necessarily all) operations on an (not necessarily all) operations on an objectobject
Each user process owns a collection of Each user process owns a collection of capabilities, which define the objects it capabilities, which define the objects it may access and the types of operations it may access and the types of operations it may perform on eachmay perform on each
Capabilities provide a unified mechanism Capabilities provide a unified mechanism for naming, accessing and protecting for naming, accessing and protecting objectsobjects
Remote Procedure CallRemote Procedure Call
Object-based model implemented using Object-based model implemented using RPC’sRPC’s
Associated with each object is a server Associated with each object is a server process that manages the objectprocess that manages the object
User processes send a request message User processes send a request message to the server that manages an objectto the server that manages an object
The request message contains a The request message contains a capability for the object, the operation to capability for the object, the operation to be performed, and any parametersbe performed, and any parameters
Remote Proceedure Call Remote Proceedure Call Cont.Cont.
The user process blocks while waiting The user process blocks while waiting for the call to completefor the call to complete
When complete, the server sends back When complete, the server sends back a reply message that unblocks the user a reply message that unblocks the user processprocess
Sending a request message, blocking, Sending a request message, blocking, and accepting a reply message forms and accepting a reply message forms the RPC, which can be encapsulated the RPC, which can be encapsulated using stub routinesusing stub routines
Remote Procedure CallRemote Procedure CallCont.Cont.
RPC based on 4 primitivesRPC based on 4 primitives RPC interface built on top the Fast RPC interface built on top the Fast
Local Internet Protocol(FLIP).Local Internet Protocol(FLIP). FLIP provides automatic shortest FLIP provides automatic shortest
path routing of messages and path routing of messages and provides automatic gatewaying provides automatic gatewaying between connected networksbetween connected networks
RPC PrimitivesRPC Primitives
getreqgetreq putreqputreq tanstans timeouttimeout
getreqgetreq
Used by serversUsed by servers Once server has initialized itself, it Once server has initialized itself, it
performs a getreq operation with the performs a getreq operation with the port it wishes to listen toport it wishes to listen to
getreq blocks server until a client sends getreq blocks server until a client sends a request using transa request using trans
when a request arrives, the server when a request arrives, the server checks that the capability is valid and checks that the capability is valid and has sufficient rightshas sufficient rights
putreqputreq
When the server completes an When the server completes an operation, it sends a reply to client operation, it sends a reply to client using putrequsing putreq
transtrans
Used by clients to send requests to Used by clients to send requests to serversservers
Port of server is the first parameter to Port of server is the first parameter to transtrans
trans call blocks until server sends replytrans call blocks until server sends reply kernel on which trans is executed kernel on which trans is executed
attemps to locate the server by attemps to locate the server by broadcasting a message with the port in broadcasting a message with the port in itit
Trans (cont.)Trans (cont.) If another kernel has a server waiting for a If another kernel has a server waiting for a
request on that port, it responds and the request on that port, it responds and the RPC is sent to the server which handles the RPC is sent to the server which handles the request and returns a replyrequest and returns a reply
The kernel keeps a cache of known The kernel keeps a cache of known locations of ports to improve performance locations of ports to improve performance for subsequent RPCsfor subsequent RPCs
trans is not called directly by clients, but trans is not called directly by clients, but imbedded in a proc call that handles the imbedded in a proc call that handles the marshaling and sending of datamarshaling and sending of data
timeouttimeout
Used to set the amount of time Used to set the amount of time spent searching for the server spent searching for the server when doing a transactionwhen doing a transaction
default timeout is 5 secondsdefault timeout is 5 seconds
Client/Server CodingClient/Server Coding
Not necessary to write server loop Not necessary to write server loop and client stub code yourselfand client stub code yourself
AIL(Amoeba Interface Language) AIL(Amoeba Interface Language) generates this code automaticallygenerates this code automatically
servers can be multithreaded but servers can be multithreaded but don’t have to bedon’t have to be
DirectoriesDirectories
File names not implemented by the File names not implemented by the file serverfile server
Many more object types than files, so Many more object types than files, so a general naming service is requireda general naming service is required
Directory Server implements naming Directory Server implements naming service by implementing an arbitrary service by implementing an arbitrary directed graph of directoriesdirected graph of directories
Directories Directories Cont.Cont.
Directory object is a list of (ASCII Directory object is a list of (ASCII string, capability-set) pairsstring, capability-set) pairs
Extra degree of fault tolerance is Extra degree of fault tolerance is achieved by duplication the achieved by duplication the directory serverdirectory server
The two servers communicate with The two servers communicate with each other to keep the data about each other to keep the data about directories consistentdirectories consistent
FilesFiles
File server is known as a Bullet ServerFile server is known as a Bullet Server Uses a vary large buffer cache and Uses a vary large buffer cache and
stores file contiguously, both in core stores file contiguously, both in core and on disk to give a very high and on disk to give a very high performanceperformance
Bullet server files are immutable(once Bullet server files are immutable(once created cannot be changed)created cannot be changed)
Files created automically(do not Files created automically(do not officially exist until commited)officially exist until commited)
Amoeba and POSIX Amoeba and POSIX EmulationEmulation
POSIX emulation library provides POSIX emulation library provides reasonable source code reasonable source code compatibilitycompatibility
This provides Amoeba with a This provides Amoeba with a reasonable programming reasonable programming environment and simplifies the environment and simplifies the migration of software and staff migration of software and staff from UNIX-like systemsfrom UNIX-like systems
ConclusionConclusion
Amoeba was designed to provide a Amoeba was designed to provide a transparent distributed systemtransparent distributed system
Still undergoing development, but Still undergoing development, but current version goes a long way current version goes a long way towards satisfying the design goalstowards satisfying the design goals
POSIX emulation has provided a POSIX emulation has provided a ready-made programming ready-made programming environmentenvironment