랑데뷰 통신 예제

종종 동기 통신은 발신자와 수신을 연결하는 “채널”의 관점에서 설명된다. 경우에 따라 이러한 채널에는 버퍼링 용량이 있어 나중에 배달할 수 있도록 몇 개의 메시지를 저장할 수 있습니다. 버퍼가 가득 차면 발신자가 용량을 기다리는 것을 차단합니다. 버퍼가 비어 있으면 수신자가 메시지를 기다리는 동안 차단됩니다. 버퍼 크기가 0(버퍼링 없음)은 해당 수신기/송신기를 사용할 수 있을 때까지 보낸 자/수신을 차단합니다. 버퍼링되지 않은 동기 통신 채널을 구현하는 데 사용되는 행위자 동작을 살펴보겠습니다. 그림 1(b)은 수신기가 로 전송된 패킷을 수신하려는 두 노드 간의 통신을 보여 줍니다. 트리거를 네트워크에 삽입합니다. 식별자로 패킷이 전송되면 트리거로 인해 IP를 통해 로 전달됩니다. 전형적인 CSP 의 예 중 하나는 초콜릿 자동 판매기와 초콜릿을 구입하고자하는 사람과의 상호 작용을 추상적으로 표현한 것입니다. 이 자동 판매기는 각각 지불의 삽입과 초콜릿의 배달을 나타내는 두 가지 이벤트, “동전”과 “choc”를 수행 할 수 있습니다. 초콜릿을 제공하기 전에 지불을 요구하는 기계 (현금만)는 다음과 같이 작성 할 수 있습니다 : 작업은 수락 문을 사용하여 랑데부를 수락합니다.

문에는 랑데부를 구현하는 본문이 포함될 수 있습니다. 여러 랑데부를 수락해야 하는 경우 선택적 accept 문을 사용할 수 있습니다. 예를 들어, Hoare의 1978년 원본 논문에 제시된 CSP 버전은 본질적으로 프로세스 미적분이 아닌 동시 프로그래밍 언어였습니다. 이후 버전의 CSP와는 상당히 다른 구문이 있었고, 수학적으로 정의된 의미체계를 가지고 있지 않았으며[11] 무한한 비결정론을 나타낼 수 없었습니다. [12] 원래 CSP의 프로그램은 동기 메시지 전달을 통해 서로 엄격하게 통신하는 고정된 수의 순차적 프로세스의 병렬 컴포지션으로 작성되었습니다. 이후 버전의 CSP와 달리 각 프로세스에는 명시적 이름이 할당되었으며 메시지의 원본 또는 대상은 의도된 송신 또는 수신 프로세스의 이름을 지정하여 정의되었습니다. 예를 들어, 프로세스 안정 실패 모델은 프로세스 수행을 거부할 수 있는 이벤트 집합 XΣ {디스플레이 스타일 Xsubseteq Sigma } 이벤트 집합인 거부 집합으로 추적 모델을 확장합니다. 실패는 한 쌍 (s, X) {displaystyle left(s, Xright)} , 추적 s로 구성, 그리고 프로세스가 추적 s를 실행 한 후 거부 할 수있는 이벤트를 식별하는 거부 세트 X.

안정 실패 모델에서 프로세스의 관찰 된 동작은 쌍에 의해 설명된다 (t r c e s (P) , f i l 당신은 e s (P) ) {displaystyle left (mathrm {추적} left (Pright), mathrm {실패} left(Pright)오른쪽)} 예를 들어 아래에 제공된 간단한 예제 코드는 개별 송신/수신 작업 대신 파생 된 데이터 형식을 사용할 때 26% 1 ~ 38% 3 사이의 성능 향상을 보여 주었습니다. CSP를 소프트웨어 설계에 산업용으로 적용하려면 일반적으로 신뢰할 수 있고 안전에 중요한 시스템에 중점을 두었습니다. 예를 들어, 브레멘 안전 시스템 연구소와 다임러-벤츠 항공우주 연구소는 CSP의 국제 우주 정거장에서 사용하기 위한 고장 관리 시스템과 항공 전자 인터페이스(약 23,000줄의 코드로 구성)를 모델링하고 모델을 분석하여 설계에 교착 상태와 라이브록이 없는지 확인합니다. [14] [15] 모델링 및 분석 프로세스는 테스트만으로는 감지하기 어려웠던 여러 가지 오류를 발견할 수 있었습니다.

This entry was posted in Uncategorized. Bookmark the permalink.