Está en la página 1de 28

aVsonline.blogspot.

com aVs997 techfamily

Inferno

Distributed Programming With Inferno


Larry Rau Member of Technical Staff Inferno Network Software Solutions Lucent Technologies, Inc larryr@lucent.com http://www.lucent.com/inferno
1

Inferno

The Inferno OS

Lightweight OS for networked devices


portable -- StrongARM, PowerPC, x86, MIPS, SPARC. Integrated DIS VM -- supports portable machine independent code modules. Provides distributed computing capability through Namespace and Styx Technologies Authentication and Encryption between nodes.
2

Distributed Computing Capabilities


Inferno

The Inferno OS is built around a unique method of distributed computing


All resources represented as files A dynamically adjustable namespace The Styx file access protocol

Inferno File Systems


Inferno

Inferno views virtually everything as a file system


network interface: /dev/tcp, /dev/udp,... process information: /prog window system: /dev/draw information: /dev/user, /dev/time, /dev/sysname, /dev/random,.

Example: TCP Interface


Inferno

Access a TCP/IP network by manipulating the following files:


puck$ ls /net/tcp/0 /net/tcp/0/ctl /net/tcp/0/data /net/tcp/0/listen /net/tcp/0/local /net/tcp/0/remote /net/tcp/0/status

Example: /dev/draw
Inferno

Access to the Inferno windowing system is via another file system:


puck$ ls /dev/draw/2 /dev/draw/2/ctl /dev/draw/2/data /dev/draw/2/refresh

Other existing file systems


Inferno

telfs: interface to telephony device Mfs: message store file system asr: interface to speech recognition

Why file systems?


Inferno

Simple concept
familiar access methods: open, read, write, etc.

language neutral access Easy to distribute

The Inferno Namespace


Inferno

The Inferno Namespace is a hierarchical collection of files (I.e. resources). Every process accesses its resources via its own namespace
can inherit from parent share with other processes

Local and remote resources are bound into the namespace.


9

Primary Namespace Operations


Inferno

BIND MOUNT EXPORT

10

The BIND Namespace Operation


Inferno

Attaches local resources to the namespace Moves a resource within the namespace Can hide resources by binding over Binding a directory can result in a Union Directory

11

Union Directories
Inferno

A directory whose contents are a combination of the source and destination Directories can be stacked where the contents of one hide the contents of others. When binding you have the option of adding before or after the current contents
12

Union Directories
Inferno
/

tmp

A
F1 A1 A2

...
Y
F1 F2 F3

Z
F2 A1 B1

...

...

...

...
13

Union Directories
Inferno

/
A
F1 A1 A2

Z
F2 A1 B1

bind -b /tmp/Y /A bind -a /tmp/Z /A ...

... ...

A
F1 A1 F2 A2 F3

14

The MOUNT Namespace Operation


Inferno

Attaches a remote file system to the namespace Equivalent to a remote attach to obtain the remote file systems root followed by a BIND operation Mount initiates a Styx connection over an established network connection Net connection can be authenticated
15

Mounting A Remote Node


Inferno

Establish a network connection: TCP, Serial, ATM, etc.

[optional] Mutually authenticate the connection and establish session keys for encryption of all communication
Establish a Styx session: this obtains the root of the remote file system

Node1

Node2

16

The EXPORT Namespace Operation


Inferno

Present the current namespace to remote clients Listens on a network connection for a Styx session request Accepts the mount by providing access to the root of the namespace Continually responds to client file requests via the Styx protocol
17

Exporting a Namespace
Inferno

Obtain a network connection: TCP Listen, etc

[optional] Perform mutual authentication and encryption key setup


Wait for Styx session request
Node1 Node2

18

Mini-Summary
Inferno

Represent all local resources as file systems Namespace provides a single, dynamically configured, hierarchical view of all resources (I.e. file systems) Remote resources attached to the namespace

19

Writing Applications
Inferno

Applications access resources by accessing files within the namespace Use familiar file access functions Access is independent of how the files got in the namespace -- local,remote, who cares!

20

Writing File Systems


Inferno

Inferno drivers: C modules linked with the kernel Limbo programs using the file2chan() system call
makes use of srv device (I.e. file system)

Limbo written Synthetic File Systems InfernoSpaces


Java class library C library
21

Application Advantages
Inferno

Applications can assume location of resources: open(/x/y,) Resources can be configured prior to running the applications -- (I.e. an administrative chore) No explicit networking code required Allows for network independent distributed computing
22

The Styx Protocol


Inferno

A simple file access protocol Message passing: transmit-reply (a Styx Transaction) Synchronous 13 message pairs + 1 error reply Assumes a reliable transport Allows overlapped transactions Mostly fixed length messages
23

Styx Message Structure


Inferno
Indicates message type: initial transmission (T-message) or reply message (R-message) Unique identifier used to track commands

Unsigned integer that represents current file


Message specific data

type

tag

fid

Contents

24

Styx Transactions
Inferno

NOP FLUSH CLONE WALK OPEN CREATE READ

WRITE CLUNK REMOVE STAT WSTAT ATTACH

25

Summary
Inferno

Everything is a file + A method to organize files + A remote file access protocol = A Distributed Programming Model

26

How is it being used


Inferno

Telephony
Call setup Device control

Text to Speech Network Gateways

27

Questions
Inferno

???

28

También podría gustarte