Upload
gyan
View
21
Download
0
Embed Size (px)
DESCRIPTION
Algorithms for Implementation of Tuple Space Expert Topic ECE 1770 Spring 2003. Ioana BurceaWon-Ho Park Electrical and Computer Engineering Department University of Toronto. Agenda. Ioana Matching Algorithms (in Linda) Basic Terminology and Concepts Multi-Key Search Algorithm Won-Ho - PowerPoint PPT Presentation
Citation preview
Ioana Burcea Won-Ho Park
Electrical and Computer Engineering Department
University of Toronto
Algorithms for Implementation of Tuple Space
Expert TopicECE 1770 Spring 2003
Agenda
Ioana
- Matching Algorithms (in Linda)
Basic Terminology and Concepts
Multi-Key Search Algorithm
Won-Ho
- Linda: Implementation of Tuple Space
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)
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
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)
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
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
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
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
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)
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.
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
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