请输入您要查询的百科知识:

 

词条 Linda (coordination language)
释义

  1. Model

  2. Linda-calculus

      Syntax    Semantics  

  3. Evaluation

  4. Implementations

  5. Criticisms

  6. Name

  7. Publications

  8. See also

  9. References

  10. External links

In computer science, Linda is a model of coordination and communication among several parallel processes operating upon objects stored in and retrieved from shared, virtual, associative memory.[1] It was developed by Sudhir Ahuja at AT&T Bell Laboratories in collaboration with David Gelernter and Nicholas Carriero at Yale University in 1986.[1][2]

Model

This model is implemented as a "coordination language" in which several primitives operating on ordered sequence of typed data objects, "tuples," are added to a sequential language, such as C, and a logically global associative memory, called a tuplespace, in which processes store and retrieve tuples.

The original Linda model requires four operations that individual workers perform on the tuples and the tuplespace:

  • in atomically reads and removes—consumes—a tuple from tuplespace
  • rd non-destructively reads a tuplespace
  • out produces a tuple, writing it into tuplespace (tuple may be duplicated in tuplespace)
  • eval creates new processes to evaluate tuples, writing the result into tuplespace

Linda-calculus

The Linda-calculus is a formalisation of the above model with the difference that in the following subsumes both out and eval operations. The presentation of the calculus is based on Cridlig et al.[3]

Syntax

We abstract the concrete representation of tuples.

We just assume that we have a set of tuples and

we are allowed to form and apply a substitution function on tuples substituting variables for terms that yields a tuple.

For example, given we have a tuple , then

applying a substitution on yields

The Linda-calculus processes are defined by the following grammar.

The syntax includes the aftermentioned Linda operations, non-deterministic choice, and recursion. The substitution function is extended to processes recursively.

Semantics

A tuple space is represented as a multiset of the processes. We write for where is a multiset, a singleton multiset, and is the multiset union operation. The semantics is then defined as a reduction relation on a multiset as follows.

Note that (input) consumes the tuple from the tuple space whereas (read) only reads it.

The resulting operational semantics is synchronous.

Evaluation

Compared to other parallel-processing models, Linda is more orthogonal in treating process coordination as a separate activity from computation, and it is more general in being able to subsume various levels of concurrency—uniprocessor, multi-threaded multiprocessor, or networked—under a single model. Its orthogonality allows processes computing in different languages and platforms to interoperate using the same primitives. Its generality allows a multi-threaded Linda system to be distributed across multiple computers without change.

Whereas message-passing models require tightly-coupled processes sending messages to each other in some sequence or protocol, Linda processes are decoupled from other processes, communicating only through the tuplespace; a process need have no notion of other processes except for the kinds of tuples consumed or produced (data coupling).

Researchers have proposed more primitives to support different types of communication and co-ordination between (open distributed) computer systems, and to solve particular problems arising from various uses of the model.{{Citation needed|date=January 2016}} Researchers have also experimented with various means of implementing the virtual shared memory for this model.{{Citation needed|date=January 2016}} Many of these researchers proposed larger modifications to the original Linda model, developing a family of systems known as Linda-like systems and implemented as orthogonal technology (unlike original version). An example of this is the language Ease designed by Steven Ericsson-Zenith.

Implementations

Linda was originally implemented in C and Fortran, but has since been implemented in many programming languages, including:

  • C: C-Linda, [https://web.archive.org/web/20110713211732/http://lindaspaces.com/products/linda.html TCP-Linda], LinuxTuples
  • C++: CppLinda, [https://github.com/aeri/Boreas Boreas]
  • C#: [https://github.com/pSpaces/ pSpaces]
  • Erlang: Erlinda
  • Go: [https://github.com/pSpaces/ pSpaces]
  • Java: JavaSpaces, jRESP, TSpaces, LightTS, LIME, [https://github.com/pSpaces/ pSpaces]
  • JavaScript: [https://github.com/pSpaces/ pSpaces]
  • Lisp
  • Lua: LuaTS [https://web.archive.org/web/20130513094537/http://kotisivu.dnainternet.net/askok/bin/lanes/ Lua Lanes]
  • Prolog: SICStus Prolog Linda
  • Python: PyLinda
  • Ruby: Rinda
  • Swift: [https://github.com/pSpaces/ pSpaces]

Some of the more notable Linda implementations include:

  • C-Linda or TCP-Linda - the earliest commercial and a widespread implementation of virtual shared memory for supercomputers and clustered systems from Scientific Computing Associates, founded by Martin Schultz.
  • JavaSpaces - a Java-based tuplespace implementation that helped popularize distributed computing.
  • TSpaces - a Java-based tuplespace platform from IBM.{{undue weight inline|date=October 2011}}

Criticisms

Criticisms of Linda from the multiprocessing community tend to focus on the decreased speed of operations in Linda systems as compared to Message Passing Interface (MPI) systems.{{Citation needed|date=June 2007}} While not without justification, these claims were largely refuted for an important class of problems.[4] Detailed criticisms of the Linda model can also be found in Steven Ericsson-Zenith's book Process Interaction Models.[5]

Name

Linda is named after Linda Lovelace, an actress in the pornographic film Deep Throat, a pun on Ada's tribute to Ada Lovelace.[6]

Publications

  • {{cite journal|last1=Gelernter|first1=David|last2=Carriero|first2=Nicholas|year=1992|doi=10.1145/129630.129635|archive-url=|archive-date=|dead-url=|access-date=|url=http://dl.acm.org/citation.cfm?id=129630.129635|title=Coordination Languages and their Significance|journal=Communications of the ACM|volume=35|issue=2|pages=97–107}}
  • {{cite journal|last1=Carriero|first1=Nicholas|last2=Gelernter|first2=David|archive-url=|archive-date=|dead-url=|access-date=|last3=Mattson|first3=Timothy|last4=Sherman|first4=Andrew|year=1994|doi=10.1016/0167-8191(94)90032-9|url=https://linkinghub.elsevier.com/retrieve/pii/0167819194900329|title=The Linda Alternative to Message-Passing systems|journal=Parallel Computing|volume=20|issue=4|pages=633–655}}
  • {{cite web

|last=Wells
|first=George
|url=http://wcat05.unex.es/Documents/Wells.pdf
|title=Coordination Languages: Back to the Future with Linda
|publisher=Rhodes University
|deadurl=yes
|archiveurl=https://web.archive.org/web/20091219121402/http://wcat05.unex.es/Documents/Wells.pdf
|archivedate=2009-12-19
|df=
}}
  • {{cite web

| last = Sluga
| first = Thomas Arkadius
| url =
| title = Modern C++ Implementation of the LINDA coordination language
| publisher = University of Hannover
}}

See also

  • Dataflow
  • Data flow diagram
  • Dataflow programming
  • Flow-based programming

References

1. ^{{Citation|title = Linda and Friends|journal = Computer|date=August 1986|volume = 19b|issue = 8|publisher = IEEE|pages = 26–34|last1 = Ahuja|first1 = Sudhir (AT&T Bell Laboratories)|last2 = Carriero|first2 = Nicholas|last3 = Gelernter|first3 = David|doi=10.1109/mc.1986.1663305}}
2. ^{{Cite journal|last=Carriero|first=Nicholas|last2=Gelernter|first2=David|date=1985-01-01|title=The S/Net's Linda Kernel (Extended Abstract)|journal=Proceedings of the Tenth ACM Symposium on Operating Systems Principles|series=SOSP '85|location=New York, NY, USA|publisher=ACM|pages=160–|doi=10.1145/323647.323643|isbn=978-0897911740}}
3. ^{{cite conference | title = Semantics and analysis of linda-based languages| last1 = Cridlig| first1 = Régis| last2 = Goubault| first2 = Eric| date = 1993| publisher = Springer, Berlin, Heidelberg| book-title = Lecture Notes in Computer Science, vol 724| doi = 10.1007/3-540-57264-3_30| isbn = 978-3-540-57264-0}}
4. ^{{cite journal |author=Carriero|title=The Linda Alternative to message-passing systems |journal=Parallel Computing |volume=2 |issue=4 |pages=633–655 |date=1 April 1994 |display-authors=etal}}
5. ^{{cite book | last=Ericsson-Zenith|title=Process Interaction Models|publisher=Paris University|year=1992}}
6. ^{{cite news| url=https://www.nytimes.com/1992/01/19/business/david-gelernter-s-romance-with-linda.html?scp=1&sq=David%20Gelernter%20began%20doctoral%20studies%20Stony%20Brook&st=cse&pagewanted=all | work=The New York Times | title=David Gelernter's Romance With Linda | first=John | last=Markoff | date=January 19, 1992}}

External links

  • Coordination Language - A small discussion about the differences between the approach of Linda and that of Flow-based programming
  • [https://sourceforge.net/projects/cpplinda/ Linda for C++]
  • Linda for C
  • Erlinda (for Erlang)
  • Linda for Java
  • Linda for Prolog
  • PyLinda (for Python)
  • [https://web.archive.org/web/20060710201721/http://segment7.net/projects/ruby/drb/rinda/ Rinda (for Ruby)]
  • Linda in a Mobile Environment (LIME) (for nesC)
{{DEFAULTSORT:Linda (Coordination Language)}}

2 : Concurrent programming languages|Tree programming languages

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/11/13 9:38:09