린다(조정 언어)

Linda (coordination language)
린다
패러다임다중 파라다임[1]
가족조정언어
설계자데이비드 겔른터
개발자Scientific Computing Associates
첫 등장1986; 36년 전 (1998년)
웹사이트lindaspaces.com
영향받은
자바[2]

컴퓨터 과학에서 린다병렬 컴퓨팅 환경에서 통신을 돕는 조정 모델이다.데이비드 겔러너가 개발한 이 언어는 린다의 역할이 "계산 활동을 만들고 그들 사이의 통신을 지원하는" 포트란이나 C와 같이 본격적인 계산 언어와 함께 사용되도록 되어 있다.[3][4][5]

역사

데이비드 겔렌터는 1979년 박사학위 후보로 린다의 첫 번째 버전을 썼고, 포르노 영화 딥 트루트에 출연한 린다 러블레이스의 이름을 따서 린다의 이름을 지었다.당시 병렬 처리를 위한 주요 언어는 미 국방부가 개발한 에이다와 겔러너가 '귀엽고 부피가 큰' 언어로 간주한 에다 러브레이스에 대한 헌사였다.[6]

1986년 겔른터가 AT&T 벨 연구소의 예일대 동료 니콜라스 캐리로, 수디르 아후자와 함께 IEEE 저널에 "린다와 친구들"을 발표하면서 널리 발표되었다.[7]

1990년대 초까지 린다 씨는 AT&T, 보잉, 유나이티드 테크놀로지스뿐만 아니라 월가 증권사들을 포함한 기업들에 의해 빅데이터 분석을 보다 효율적으로 수행하기 위해 널리 이용되었다.심지어 린다에 기반을 둔 전문 병렬 컴퓨팅 응용 프로그램을 만드는 회사도 있었는데, 그 중 가장 큰 회사는 몇몇 예일대의 컴퓨터 과학자들에 의해 설립된 뉴 헤이븐에 본사를 둔 회사인 Scientific Computing Associates였다(겔런터는 때때로 그들을 위해 상담했지만 그곳에서 일하지 않았다).[6]1990년대 중반에 린다에 대한 관심은 떨어졌지만, 1990년대 후반에 선 마이크로시스템스IBM을 포함한 몇몇 기업들이 자바에서 린다를 시행하면서 다시 돌아왔다.[3]

개요

모델

린다 모델은 기본 주소 지정 가능한 단위가 입력된 데이터 객체의 순서인 튜플이므튜플 공간이라고 알려진 분산 공유 메모리를 제공한다. 특히 린다에서 튜플은 괄호 안에 둘러싸인 최대 16개의 입력된 필드의 순서다."튜플 공간은 "프로세스에 의해 논리적으로 공유"되는데, 이를 튜플을 저장하고 회수하는 작업자로 지칭한다.[8]

운영

린다의 주요 장점 중 하나는 튜플스페이스에 접근하기 위해 근로자들이 튜플스페이스에 대해 수행하는 6개의 작업만으로 간단하다는 것이다.[9]

  • out: 튜플스페이스에 튜플을 넣는다.
  • in: 튜플스페이스에서 주어진 패턴과 일치하는 튜플을 꺼낸다(일치가 없을 경우 작동이 차단됨)
  • rd: 튜플스페이스에서 주어진 패턴과 일치하는 튜플을 복사한다(일치가 없을 경우 작동이 차단됨)
  • eval: 튜플을 평가하기 위한 새 공정 작성
  • inp: 의 비차단 버전in(일치가 없을 경우 오류 메시지가 반환됨)
  • rdp: 의 비차단 버전rd(일치가 없을 경우 오류 메시지가 반환됨)

비교

다른 병렬 처리 모델에 비해 린다는 프로세스 조정을 연산과는 별개의 활동으로 취급하는 데 있어 직교성이 강하며, 단일 모델에서 유니프로세서, 멀티스레드 멀티프로세서, 네트워크 등 다양한 수준의 동시성을 소급할 수 있는 것이 일반적이다.그것의 직교성은 다른 언어와 플랫폼의 프로세스 컴퓨팅이 동일한 원시 요소를 사용하여 상호운용할 수 있도록 한다.그것의 일반성은 다중 스레드 린다 시스템을 변경 없이 여러 대의 컴퓨터에 분산시킬 수 있게 한다.

메시지 전달 모델은 어떤 시퀀스나 프로토콜로 서로 메시지를 전송하는 긴밀하게 연결된 프로세스를 필요로 하는 반면에, 린다 프로세스는 튜플스페이스를 통해서만 통신하면서 다른 프로세스로부터 분리된다; 프로세스는 소비되거나 생산되는 튜플의 종류를 제외하고는 다른 프로세스에 대한 개념이 없다.다중 처리 커뮤니티의 린다에 대한 비판은 MPI(메시지 패스싱 인터페이스) 시스템에 비해 린다 시스템의 운영 속도가 감소하는 것에 초점을 맞추는 경향이 있다.[citation needed]명분이 없는 것은 아니지만, 이러한 주장들은 중요한 문제들에 대해 크게 반박되었다.[10]린다 모델에 대한 자세한 비판은 스티븐 에릭슨-제니스의 저서 프로세스 상호작용 모델에서도 찾아볼 수 있다.[11]

연구자들은 (개방형 분산형) 컴퓨터 시스템 간의 서로 다른 유형의 통신과 조정을 지원하고, 모델의 다양한 사용에서 발생하는 특정한 문제를 해결하기 위해 더 많은 원시성을 제안했다.[citation needed]연구자들은 또한 이 모델에 대한 가상 공유 메모리를 구현하는 다양한 방법을 실험했다.[citation needed]이 연구자들 중 다수는 린다와 유사한 시스템으로 알려진 시스템 제품군을 개발하여 (원래 버전과는 달리) 직교 기술로 구현하면서 원래의 린다 모델에 더 큰 수정을 제안했다.그 예로는 스티븐 에릭슨제니스가 디자인한 이지(Easy)라는 언어가 있다.

린다의 접근방식은 플로우 기반 프로그래밍의 접근방식과도 비교되어 왔다.[12]조정 언어 - Linda의 접근방식과 Flow 기반 프로그래밍의 접근방식의 차이에 대한 작은 토론

린다-미적분학

린다-미적분은 e 에서 아웃평가 작업을 모두 충족하는 차이를 가진 위 모델의 공식화다.[13]

구문

우리는 튜플의 구체적인 표현을 추상화한다.우리는 단지 튜플 T 을(를) 가지고 있다고 가정하고 튜플 대체 변수에 대체 함수 을(를) 형성하여 적용할 수 있다.For example, given we have a tuple , then applying a substitution on yields

린다-미적분학 과정은 다음과 같은 문법으로 정의된다.

구문에는 뒤에 언급된 린다 연산, 비결정론적 선택, 재귀 등이 포함된다.대체 함수는 재귀적으로 프로세스까지 확장된다.

의미론

튜플 공간은 프로세스의 멀티셋으로 표현된다.We write for where is a multiset, a singleton multiset, and is the multiset union operation.그런 다음 의미론은 다음과 같이 멀티셋 M대한 축소관계로 정의된다.

(입력)은 튜플 공간으로부터 튜플 을(를) 소비하는 반면, (읽기)는 튜플 공간에서만 읽는다.결과적인 운영 의미론은 동기식이다.

구현

린다(Linda)는 원래 C와 Fortran으로 구현되었지만, 그 이후 다음을 포함한 많은 프로그래밍 언어로 구현되었다.

보다 주목할 만한 린다 구현의 일부는 다음과 같다.

  • C-Linda 또는 TCP-Linda - 마틴 슐츠가 설립한 Scientific Computing Associates의 슈퍼컴퓨터 및 클러스터링된 시스템을 위한 가상 공유 메모리의 초기 상용화 및 광범위한 구현.
  • JavaSpaces - 분산 컴퓨팅을 대중화하는 데 도움이 되는 Java 기반 튜플스페이스 구현.
  • TSpaces - IBM의 Java 기반 튜플스페이스 플랫폼.[undue weight? ]

참고 항목

참조

  1. ^ Ciancarini, Paolo. "Lecture 3: Coordination languages" (PDF). University of Bologna. Retrieved 9 January 2022.
  2. ^ "David Gelernter, B.A. & M.A. '76". Yale Scientific. 14 February 2011. Retrieved 8 January 2022.
  3. ^ a b Wells, George (July 2005). "Coordination Languages: Back to the Future with Linda" (PDF). Conference: 2nd International Workshop on Coordination and Adaptation Techniques for Software Entities. Rhodes University. Archived from the original (PDF) on 19 December 2009.
  4. ^ Gelernter, David; Carriero, Nicholas (February 1992). "Coordination Languages and their Significance" (PDF). Communications of the ACM. 35 (2): 97–107. doi:10.1145/129630.129635. S2CID 7748555.
  5. ^ Carriero, Nicholas; Gelernter, David (1985-01-01). "The S/Net's Linda Kernel (Extended Abstract)". Proceedings of the Tenth ACM Symposium on Operating Systems Principles. SOSP '85. New York, NY, USA: ACM: 160–. doi:10.1145/323647.323643. ISBN 978-0897911740. S2CID 6922183.
  6. ^ a b Markoff, John (19 January 1992). "David Gelernter's Romance With Linda". The New York Times. Archived from the original on 30 December 2019. Retrieved 8 January 2022.
  7. ^ Ahuja, Sudhir; Carriero, Nicholas; Gelernter, David (August 1986), "Linda and Friends", Computer, IEEE, 19b (8): 26–34, doi:10.1109/mc.1986.1663305, S2CID 5155678
  8. ^ John H. Reynolds (December 2002). "Linda Arouses a Sleeping Barber" (PDF). Proceedings of the Winter Simulation Conference. San Diego, CA: IEEE. doi:10.1109/WSC.2002.1166471. Retrieved 8 January 2022.
  9. ^ Masatoshi Seki (February 2017). The dRuby Book: Distributed and Parallel Computing with Ruby (0.1 ed.). Pragmatic Programmers. Retrieved 9 January 2022.
  10. ^ Carriero; et al. (1 April 1994). "The Linda Alternative to message-passing systems" (PDF). Parallel Computing. 2 (4): 633–655. doi:10.1016/0167-8191(94)90032-9.
  11. ^ Ericsson-Zenith (1992). Process Interaction Models. Paris University.
  12. ^ J. Paul Rodker Morrison (2 July 2004). "Coordination Language". Retrieved 9 January 2022.
  13. ^ Cridlig, Régis; Goubault, Eric (1993). "Semantics and analysis of linda-based languages". Lecture Notes in Computer Science, vol 724. Springer, Berlin, Heidelberg. doi:10.1007/3-540-57264-3_30. ISBN 978-3-540-57264-0.