행위자 모델 구현
Actor model implementation컴퓨터 과학에서, 배우 모델 구현은 배우 모델의 구현 문제에 관한 것이다.
코스믹 큐브
칼텍 우주 큐브는 척 세이츠 외 칼텍이 액터 시스템에 건축 지원을 제공하는 방식으로 개발했다.Cosmic Cube와 대부분의 다른 병렬 프로세서의 중요한 차이점은 이 다중 명령 다중 데이터 기계는 동시 프로세스 간의 통신에 공유 변수 대신 메시지 전달을 사용한다는 것이다.이 연산 모델은 하드웨어 구조와 운영체제에 반영되어 있으며, 프로그래머가 보는 명시적인 메시지 전달 통신이기도 하다.세이츠[1985]에 따르면:
- 내부 노드 통신은 매우 많은 수의 노드로 잘 확장되어야 한다는 것이 우주 큐브 실험의 전제였다.하이퍼큐브와 같은 직접 네트워크는 다수의 동시 통신 채널에서 달성한 총 대역폭과 구현의 실현 가능성 모두에 관하여 이 요건을 충족한다.하이퍼큐브는 실제로 오메가 네트워크나 반얀 네트워크와 같은 간접 로그 스위칭 네트워크의 분산된 변형이며, 공유 스토리지 조직에서 사용될 수 있는 종류다.그러나 하이퍼큐브에서는 통신 경로가 서로 다른 수의 채널을 통과하므로 서로 다른 지연 시간을 나타낸다.그러므로, 노드에 프로세스를 배치할 때 통신 지역성을 이용하는 것이 가능하다.
제이머신
J-Machine은 MIT의 Bill Dally 외 연구진에 의해 개발되었으며, 액터스에 적합한 건축 지원을 제공하였다.여기에는 다음이 포함되었다.
- 비동기 메시지
- 수신인이 로컬인지 또는 로컬이 아닌지에 관계없이 동시에 메시지를 보낼 수 있는 동일한 작업자 주소 공간
- 배우 파이프라이닝의 한 형태(배우 모델 참조)
Concurrent Smalltalk (Actors를 사용하여 모델링할 수 있음)는 J 머신을 프로그래밍하기 위해 개발되었다.
프로토타입 배우 프로그래밍 언어
휴이트[2006]는 액터스의 행동의 중요한 측면을 직접적으로 표현한다는 의미에서 액터 프로그래밍 언어의 프로토타입을 제시했다.메시지는 표기법을 사용하여 XML로 표시됨
- “<”<tag>“>” <element>1 ... <element>n “<”/<tag>“>”
프로그래밍 언어의 의미론들은 각각의 프로그램 구성을 그 자체의 행동을 가진 행위자로 정의함으로써 정의된다.실행 중 프로그램 구성 요소 간에 평가 메시지를 전달하여 실행을 모델링.
환경 액터스
각 메시지에는 프로그램 식별자의 바인딩이 있는 환경 역할을 하는 행위자의 주소가 있다.환경 행위자는 불변의 존재, 즉 변하지 않는다.배우 환경에 의해 수신되었을 때, 배우에게 수신된 새로운 환경이 송신과 같을 때,Returned[value] 그렇지 않으면 송신할 수 있는 새로운 환경이 만들어진다.위의 내용은 을 받을 때 전송하는 행위자에 기초한다.Thrown[NotFound[identifier]]요청을 받으면 위와 같이 행동한다.
표현.
프로토타입 프로그래밍 언어에는 다음과 같은 종류의 표현이 있다.
- <<identifier>>
- 수신되면 전송
- <소통>을 보내다.
- 수신되면 새 배우가 있는 곳으로Request[Eval[environment] evalCustomer1] 보내서
- 통신을 수신할 때, 그리고 나서
- Request[Eval[environment] evalCustomer2] 그런 신인 배우가 어디 있을까?
- 통신을 수신할 때, 그 다음에 송신하다.theCommunication
- <<recipient>>.<<message>>
- 수신되면 다음과Request[Eval[environment] evalCustomer1] 같이 전송하십시오.
- 통신을 수신할 때, 그리고 나서 다음과Request[Eval[environment] evalCustomer2] 같이 전송한다.
- 통신을 수신할 때, 그리고 나서
- Request[theMessage customer]
- 수신자...<패턴>i <패턴>i ...
- 수신되면 그렇게 새 배우를 보내라.
- 통신을 수신할 때, 그리고 새로운 환경을 만들고 전송한다.
- Request[Bind[<pattern>i com] bindingCustomer] 그리고
- 수신된 경우, 발송하십시오.
- Request[Eval[environment’]]
- 그렇지 않은 경우, 시도하십시오.
- 행동...<패턴>i <패턴>i ...
- 수신되면 고객에게 다음과 같은 새 배우를 보내십시오.
- 수신할 때, 그런 다음 새 것을 생성하고 전송하십시오.
- Request[bind[<pattern>i message] customer’] 그리고
- 수신된 경우, 발송하십시오.
- Request[Eval[environment’] customer’]
- 그렇지 않은 경우, 시도하십시오.
- 수신된 경우, 발송하십시오.
- {<<<<<<<<<<<<>>>>}12
- 수신되면 송부하고Request[Eval[environment]] 동시에 송부한다.Request[Eval[environment]] customer]
- <<bodyidentifier>>에 <expression> = <expression>value을 넣는다.
- 수신되면 새로 생성하여 전송
- Request[Eval[environment] evalCustomer1.
- 수신 시, 신규 생성 후 전송
- Request[bind[<identifier> theValue] bindingCustomer]
- 수신 시, 전송
- 연재기 <연재기>
- 수신된 후, 전송된 통신이 FIFO 순서에 따라 처리되도록 새 행위자가 어디에Returned[theSerializer] 있는지 전송하십시오. 처음에 수행된 행위자와 함께
- 에 의해 커뮤니케이션이 수신되면, 다음과 같은 새로운 배우가 어디에 있는지 행위자를 보내십시오.
- 수신 시 는 에 의해 수신된 다음 통신을 위한 행위 행위자로 사용된다.
예제 프로그램
모든 행위자 주소를 포함할 수 있는 간단한 저장 셀의 예제 프로그램은 다음과 같다.
- 셀 ≡
- 리시버
- 고객 요청[초기]
- 고객 반환 전송[시리얼라이저 ReadWrite(초기)]
- 고객 요청[초기]
- 리시버
저장 셀을 생성하는 위의 프로그램은 다음과 같이 정의된 ReadWrite 동작을 이용한다.
- ReadWrite(내용) ≡
- 행동
- 의뢰[읽기] 고객
- {고객 반환[내용], ReadWrite(내용)}
- 의뢰[x]고객
- {고객 반환[], ReadWrite(x)}
- 의뢰[읽기] 고객
- 행동
위의 동작은 파이프라인으로 되어 있다는 점에 유의하십시오. 즉, 동작이 후속 읽기 또는 쓰기 메시지를 처리하는 동안에도 이전 읽기 또는 쓰기 메시지를 처리할 수 있다는 점에 유의하십시오.예를 들어, 다음 표현식은 초기 내용 5로 셀 x를 만든 다음 값 7과 9로 동시에 쓴다.
- let x = 셀.{x.write[7], x.write[9], x.read[]}에서 [5] 생성
위 표현식의 값은 5, 7, 9이다.
참고 항목
참조
- Henry Baker와 Carl Hewitt는 인공지능 프로그래밍 언어에 관한 심포지엄의 진행 과정의 증분적 쓰레기 모음입니다.SIGPlan 통지서 1977년 8월 12일.
- 피터 비숍 매우 큰 주소 공간 모듈식으로 확장 가능한 컴퓨터 시스템 MIT EECS 박사 논문1977년 6월.
- 헨리 베이커.실시간 계산을 위한 배우 시스템 MIT EECS 박사 논문.1978년 1월.
- 칼 휴이트와 러스 앳킨슨.소프트웨어 엔지니어링에 관한 시리얼라이저 IEEE 저널의 사양 및 증명 기법.1979년 1월.
- 켄 칸.애니메이션 MIT EECS 박사논문의 연산 이론.1979년 8월.
- 칼 휴이트, 베페 아타르디, 헨리 리버먼.AL, 분산 시스템 헌츠빌 제1차 국제 회의 메시지 전달 절차 대표단1979년 10월.
- 빌 콘펠트와 칼 휴이트.과학 커뮤니티 시스템, 인간 및 사이버네틱스에 대한 IEEE 거래 은유.1981년 1월.
- 헨리 리버먼.헷갈리지 않고 한번에 많은 것을 생각하는 것: 1막 MIT AI 메모 626의 병렬주의.1981년 5월.
- 헨리 리버먼.1막 MIT AI 메모 625의 미리보기.1981년 6월.
- 빌 콘펠트MIT EECS 박사 논문 문제 해결의 병행성.1981년 8월.
- 다니엘 테리오트Act-1 Language MIT AI 메모 672를 위한 입문서.1982년 4월.
- 헨리 리버먼과 칼 휴이트.1983년 6월 CACM 개체의 수명을 기반으로 한 실시간 쓰레기 수집기.
- 다니엘 테리오트법 2 MIT AI 기술 보고서 728의 설계 및 구현 문제1983년 6월.
- 헨리 리버먼.1983년 8월 워싱턴 D. C. 미국 인공지능 협회 아피아리 컨퍼런스의 객체 지향 시뮬레이터.
- 칼 휴이트와 헨리 리버먼.인공지능 MIT AI메모 750 병렬 아키텍처 설계 문제1983년 11월.
- 찰스 세이츠.1985년 1월 우주 큐브 CACM.
- 칼 매닝여행자: 배우 전망대 ECOOP 1987.컴퓨터 과학의 강의 노트 276에도 나온다.
- 칼 매닝,Acore: 핵심 배우 언어의 설계와 컴파일 마스터논문. MIT EECS.마이이 1987.
- William Athas와 Charles Seitz Multicomputers: 메시지 전달 동시 컴퓨터 IEEE 컴퓨터 1988년 8월.
- 윌리엄 아타스와 나네트 보덴 칸토어: 객체 기반 동시 프로그래밍에 관한 NSF 워크숍의 진행 중 과학 컴퓨팅을 위한 행위자 프로그래밍 시스템. 1988.SIGPlan 공지 사항의 특별 발행.
- 장 피에르 브리오트사물에서 배우로: 스몰토크-80 Relocity de Recherche 88-58, RXF-LITP, 프랑스 파리, 1988년 9월, 제한된 공생에 대한 연구
- William Dally and Wills, D.PARLE 89의 동시성을 위한 보편적 메커니즘.
- W. Horwat, A.치엔, 그리고 W.달리.CST에 대한 경험: 프로그래밍 및 구현 PLDI. 1989.
- 요네자와 아키노리, 에드. ABCL: 객체 지향 동시 시스템 MIT 프레스.1990.
- 칼 휴이트와 굴 아그하Guarded Horn 조항 언어: 그것들은 연역적이고 논리적인가?MIT의 인공지능 제2권. MIT 프레스 1991.
- 칼 휴이트와 제프 인만.DAI Betwixt 및 중간: "Intelligent Agent"에서 오픈 시스템 과학 IEEE Transactions on Systems, Man 및 Cybernetics에 이르기까지.1991년 11월/12월.
- 윌리엄 달리 외메시지 기반 프로세서: 효율적인 메커니즘 IEEE Micro를 사용하는 멀티콤퍼터 처리 노드.1992년 4월.
- 돈 박스, 데이비드 에네부스케, 고팔 카키바야, 앤드루 레이먼, 노아 멘델손, 헨리크 닐슨, 사티쉬 테테, 데이브 위너.SOAP(Simple Object Access Protocol) 1.1 W3C 참고.2000년 5월.
- Edward A. Lee and Stephen Neuendorffer (June 2004). "Classes and Subclasses in Actor-Oriented Design". Ph.D. Dissertation - extended abstract. Conference on Formal Methods and Models for Codesign (MEMOCODE). CiteSeerX 10.1.1.9.6762.
{{cite journal}}
:Cite 저널은 필요로 한다.journal=
(도움말) - 칼 휴이트반복된 논리 프로그래밍의 소멸과 그것이 왜 잘못되고 왜 잘못되었는지, 왜: AI 연구와 응용의 교훈으로 환생할 것인가.기술 보고서 SS-06-08.AAAI 프레스.2006년 3월.