emerald - et oo-språk for distribuerte applikasjoner review – concurrency - mobility

Post on 24-Feb-2016

28 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

Emerald - et OO-språk for distribuerte applikasjoner Review – Concurrency - Mobility. Eric Jul OMS Professor II . Emerald Review. We’ll start with a review of Emerald from the first two lecture series (F1, F2): Everything is an object Algol-60/Simula/Smalltalk heritage - PowerPoint PPT Presentation

TRANSCRIPT

Emerald - et OO-språk for distribuerte applikasjonerReview – Concurrency -

Mobility

Eric JulOMS

Professor II

Emerald Review

We’ll start with a review of Emerald from the first two lecture series (F1, F2):

• Everything is an object• Algol-60/Simula/Smalltalk heritage• Object constructors• Conformity based type system – think

interfaces

Main Contributions• Distribution: Mobile objects (Eric/Hank)

Any object can move at any time. Full on-the-fly• object mobility• thread mobility• heterogeneous mobility

• Conformity based type system (Norm/Andrew)Type system based on conformity principleWell-defined semantics (e.g., NIL makes sense!)

• Clean OO language (better than succesors?) including uniform object model

Class done by Syntatic Sugaring

The following turns into the previous double object constructor:class seqno

var prev: Integer = 0Integer operation getSeqNo[]

prev <- prev +1return prev

end getSeqnoend seqno

Types

Types are abstract descriptions of the operations required of an object (think: Java Interfaces – they are close to identical to types in Emerald).

Collection of operation signatures.Signature is name & types of each parameter

Conformity informally(substitution)

A type A conforms to another type B when any object that conforms to A can be used anywhere something of type B is required.

Substitution principle.

Means A is as larger or larger than B.

What is conformity?type BankAccount operation deposit[Integer] operation withdraw[Integer]

->[Integer] function fetchBalance[] ->

[Integer]end BankAccount

type DepositOnlyBankAccount function fetchBalance[] ->

[Integer] operation deposit[Integer]end DepositOnlyBankAccount

Conformity object-to-type

and type-to-type

BankAccount conforms to DepositOnlyBankAccount because it support all the require operations – and the parameters also conform

Conformity details

• Conformity is implicit. • It is a mathematical relation• No ”implements” as in Java• Operation names important• Parameter names do not matter, just their

types matters. (Parameter name for documentation only.)

• Arity matters: foo(char) different from foo(char, float)

Conformity more formally

NOT IMPORTANT HERE

Lattice of types

• Types form a lattice• Top is

type Anyend Any

• Bottom is Noone (it has ALL operations”)• NIL conforms to Noone • NIL can thus be assigned to any variable!

(Read ”Much Ado About NIL.)

Array

• Just an object• Supports “of” which returns an object• Array.of[Integer]• This is a type (!)• But it is also an object – that supports create (!)

• Creates an EMPTY array.• Addupper, addlower

Process Concept

A process is a thread of execution.

Every object can have ONE process.(Or none, but can also be modelled as a

process that is “empty”.)Process section in object constructor

Synchronization Required

Classic Monitors as described by Tony Hoare

Example: hi – ho program (synch.m)

Distribution

• Sea of objects (draw)• Sea is divided into disjunct parts called

Nodes• An object is on one and only one Node at a

time• Each node is represented by a Node object• Locate X returns the node where X is

(was!)

Immutable Objects

• Immutable objects cannot change state• Examples: The integer 17• User-defined immutable objects: for

example complex numbers• Immutable objects are omnipresent• Types must be immutable to allow static

type checking

Types are Immutable Objects

Example: arrays

var ai: Array.of[Integer]

ai <- Array.of[Integer].create[]

var aai: Array.of[Array.of[Integer]]

Why Mobility?

• Local calls are typically 1,000 – 10,000 times faster than remote calls

• Mobility for:– performance– availability

Mobility and Location Concepts

locate X returns (one of) the object X’s locationsmove X to Y move the object X to the node where Y is (or rather was)fix X at Y as move but disregard subsequent movesrefix X at Y as fix but for fixed objectsunfix X allow normal moves

Call-by-move

var B: some data object… X.F[move B]…… X.F[visit B]…

object X operation F[arg:T] loop arg.g[…] exit after many loops end loopend X

How Many Calls of B?Questions: given a normal PC enviroment, say 2

GHz CPU, 10 Mbit/s Ethernet, how many calls of a small (say 100 bytes) argument B before breakeven?

• 1• 10• 100• 1,000• 10,000• 100,000

Killroyobject Killroy process var myNode <- locate self var up: array.of[Nodes] up <- myNode.getNodes[] foreach n in up move self to n end foreach end processend Killroy

• Object moves itself to all available nodes• On the original MicroVAX implementation:

20 moves/second• Note: the thread (called a process in

Emerald) moves along

Attachment

Tree example

TreeNode

left, right

Mail message

ToFromSubjectBody

Grundliggende Distribution

• Remote References: Local &Global Objects• RPC – remote procedure call• Implementation of RPC• Location concept• Simple mobility• Asynchronous operations in Emerald• Immutability and its uses

top related