Erich Laube - PowerPoint PPT Presentation

1 / 19
About This Presentation
Title:

Erich Laube

Description:

Lexical: free variables bound at compile time. Dynamic: free variables ... 'Prototypical Approach' have a state. are local to a site. example: o = { x = 3, ... – PowerPoint PPT presentation

Number of Views:20
Avg rating:3.0/5.0
Slides: 20
Provided by: seE3
Category:

less

Transcript and Presenter's Notes

Title: Erich Laube


1
  • Erich Laube
  • Presentation based on
  • A Language with Distributed Scope
  • by Luca Cardelli

2
Problems with Passing References
  • losing contexts
  • losing structure of data
  • for example what is 0xa500 at Site 2?

Site 1
Site 2
C.f(Obj B)
Obj A
Obj C
0xa500
0xa500
???
Obj B
3
Lexical vs. Dynamic Scoping
  • Lexical free variables bound at compile time.
  • Dynamic free variables bound at run time.

output g(4) (y4 f(2))
int y 3 int f(int x) return xy int
g(int y) return f(2) main() print(g(4))
lexical scoping
2y
2y
23 5
f(2)
dynamic scoping
2y
2y
24 6
f(2)
4
Distributed Lexical Scoping
  • Lexical Scoping in Distributed Context
  • identifiers are bound to their original site
  • transmitted objects keep their bindings

5
Obliq Overview
  • Distributed Lexical Scoping
  • Interpreted
  • Untyped
  • Built on top of Modula3 Network Objects
  • Object Oriented
  • Garbage Collection

6
Obliq Objects
  • Prototypical Approach
  • have a state
  • are local to a site
  • example

o gt x gt 3, foo gt meth(a,b) b end, z gt
alias y of o2 end
7
Encoding Inheritance
  • Inheritance

Class A int i ... Class B extends A
int j ...
o1 gt var i ... o2 gt
clone(o1) var j ...
8
Aliasing / References
  • operations on a.x are redirected to b.y
  • a.x now acts as a local stub
  • like remote pointers
  • alias for all fields of a

a.x alias y of b end
redirect a to b
9
Special Field Attributes
  • protected
  • prohibits external updates, cloning and aliasing
  • serialized
  • like synchronized in Java
  • at most one thread operating on a field at a time

10
Example 1 Serialized Queue (1)
  • standard example for concurrent programming
  • two methods
  • read reads and removes an item from the queue
  • write puts an item on the queue
  • a condition
  • nonEmpty guard to prevent read from empty queue

11
Example 1 Serialized Queue (2)
  • let queue
  • (let nonEmpty condition()
  • var q
  • protected, serialized,
  • write gt
  • meth(s, elem)
  • q q _at_ elem
  • signal(nonEmpty)
  • end
  • read gt
  • meth(s)
  • watch nonEmpty
  • until (q)gt0
  • end
  • let q0 q0
  • q
  • q1 for (q)-1
  • q0
  • end
  • )

12
Network Objects
Namer
myObj
Site 2
Site 1
ObjA
ObjRemote
13
Example 2 Agent Migration (1)
  • Idea
  • write a program (agent)
  • put it into a network
  • disconnect
  • agent travels around in the network and collects
    information
  • come back online
  • collect agent

14
Example 2 Agent Migration (2)
  • Problem
  • to collect information, an agent needs some kind
    of storage
  • Obliq Solution
  • one object can be attached to another
  • active computations transmitted together with an
    evaluation stack (gt strong mobility)

15
Example 2 Agent Migration (3)
let state ... let agent proc(state, arg)
... end // migrate using a computation
engine let atSite1 net_importEngine(E1_at_Site1)
atSite1( proc(arg) agent(copy(state),
arg) end)
16
Example 2 Agent Migration (4)
  • Before Migration
  • After Migration

17
Conclusion
  • consistent way of dealing with distribution
  • at the cost of high traffic volume on network
  • Obliq as testing suite for network-object
    libraries

18
Network Objects
  • Server
  • Client

net_export(obj, Namer, site1Obj)
let site1Obj net_import(obj,
Namer) site1Obj.opA(args) site3Obj.opB(site1O
bj)
19
Network Objects (2)
  • Execution Engines
  • Server
  • Client

net_exportEngine(E1_at_Site1, Namer, arg)
let atSite1 net_importEngine(E1_at_Site1,
Namer) atSite1(proc(arg) 32 end)
Write a Comment
User Comments (0)
About PowerShow.com