Transcript
Page 1: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Ioana Burcea Won-Ho Park

Electrical and Computer Engineering Department

University of Toronto

Algorithms for Implementation of Tuple Space

Expert TopicECE 1770 Spring 2003

Page 2: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Agenda

Ioana

- Matching Algorithms (in Linda)

Basic Terminology and Concepts

Multi-Key Search Algorithm

Won-Ho

- Linda: Implementation of Tuple Space

Page 3: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Basic Terminology

Tuple (out operation)- Ex:

(1, 4.0, “Middleware”) Template = antituple (in operation)

- Ex: (1, 4.0, ?x) x: string (1, 4.0, “Middleware”)

Tuple arity- Ex:

(1, ?x) arity 2 (1, 4.0, “Middleware”) arity 3

Type signature- Ex:

(1, 4.0, “Middleware”) (int, float, string)

Page 4: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Matching Algorithms

Exhaustive search – too time consuming Optimizations

- Segmenting Orthogonal subspaces

- Based on

» tuple arity & type signature» constants

- Treated separately

- Searching Zero variable case

- In(“mutex”) Out(“mutex”) One variable case

- Single key index Multiple variable

- Multiple key search

Page 5: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Patterns

Actual parameter- Ex:

(1, 4.0, “Middleware”) 1, 4.0, “Middleware” (1, 4.0, x) 1, 4.0, x

Formal parameter (placeholder / wildcard)- Ex:

?x (x: string) Tuple Pattern

- Bitvector its size is given by the arity of the tuple a bit is set if and only if it corresponds to a actual parameter

- Ex: (1, 4.0, “Middleware”) (111) (1, 4.0. ?x) (110)

Page 6: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Matching Semantics Using Patterns

Compatible patterns- Two tuples P and Q are compatible if and only if P OR Q

contains only 1s Two tuples may match if and only if their patterns are

compatible Must-match pattern

- Ex: Out(a, b, c) pattern (111) In (x, ?y, z) pattern (101)

Matching definition- Two tuples match if and only if

They have the same type signature Exactly one is an antituple Their patterns are compatible Their must-match values are equal

OR = (111) compatible AND = (101) must-match pattern

Page 7: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Multiple key search Applied inside each orthogonal subspace Basic idea:

- Build the key search based on the pairs of compatible patterns and must-match values

Ex:- Tuple pattern: (111)

- Antituple patterns: (010), (100), (110) an entry in the dictionary for each pair (tupple pattern, antituple

pattern) => each tuple will be referenced by multiple keys the key of the entry also contains the must-match values the entry points to the tuple Ex: out(3, 5, x) => Key: (010:111:5)

- ! One record per must-match pattern is not sufficient ! Property:

- If two tuples have the same key => they match

Perfect hash function – one to one correspondence between search keys and the hash keys

Page 8: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Offline Algorithm – in operation1) Lock subspace2) Identify antituple’s pattern, p, and store antituple

where it can be found via a pointer or other reference.3) For each compatible tuple pattern, c, in use,4) Combine p, c, and antituple’s must-match values

to form a search key, k.5) Search dictionary for a tuple reference indexed by k.6) If one is found, then7) Delete tuple, antituple and all their references.8) Goto 10. else9) Insert a reference to antituple, indexed by k, into dictionary.10) Unlock subspace11) If no match was found, then 12) Suspend execution until signalled else13) Return match result

Page 9: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Online Algorithm

Adapt the tuple space whenever a new pattern is encountered

2.1) If p is a new antituple pattern, then2.2) Create a new list for p2.3) For each old, compatible tuple pattern q2.4) For each tuple t on q’s list2.5) Insert into dictionary a new reference to t, based on p and q2.6) Insert antituple in p’s list

Discussion- Usually, no perfect hash

Each hash entry has a hash chain The hash chain has to be checked until a match is found

Page 10: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Virtual Linda Machine (VLM):Implementation of Linda on Networks

TupleSpaces is a virtually shared memory: - How to implement TupleSpaces in the absence of shared

memory

- How to find Tuples and where keep them Components of VLM

- Hardware

- Network Communication Kernel

- Compiler Hardware is networks, or network computers The kernel is the program resident on each network node

that implements inter-node communication- Performing In(), out(), read() primitive instructions on

networks by sending or broadcasting messages The compiler adds code for maintaining buffer (shared

memory)

Page 11: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Run-Time Name Resolution in VLM:How to find Tuples

VLM should provide Name(Tuple)-to-Node(address) mapping information

- Centralized in directory nodes

- Distributed network-wide (e.g., by means of a network-wide broadcast)

The communication kernel translates Tuple-names into network-addresses on a per-reference basis

Network state and its storage

- Only one node generating state information maintains the state

- All nodes maintain all state by broadcasting

- VLM uses N1/2-Node Broadcast Technique.

Page 12: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

N1/2-Node Broadcast Techniqueand Name Resolution

Write set : row nodes Read set : column nodes P-in-thread process P-out-thread process

P-in-thread is intercepted by a P-out-thread on node k.

A notification message is generated on k-node, and sent to m-node

The message instructs m-node to send tuple(P…) to n-node.

mm

P-out-P-out-threadthread

Out(P…)Out(P…)

In(P…In(P…))

kk nn

P-in-threadP-in-thread

A Network Topology

Page 13: Algorithms for  Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003

Buffering:Where to keep Tuples

VLM is required to simulate Linda’s infinite global buffer Buffer is allocated by the compiler-generated code, not by

the kernel

- in(P….) : allocating a buffer on the execution stack of the process, and referred to buffer P.

- out(P…) : Tuples are stored in per-process heaps, and destroyed when it is delivered

- Header information required by the communication system If a process terminates with undelivered Tuples

- The buffers are maintained by the communication kernel until delivery occurs