message passing 예제

August 2, 2019 at 7:24 am

비동기 통신에 필요한 버퍼는 가득 차면 문제가 발생할 수 있습니다. 보낸 사람에게 차단할지 또는 향후 메시지를 삭제할지 여부를 결정해야 합니다. 보낸 사람에게 차단되면 예기치 않은 교착 상태가 발생할 수 있습니다. 메시지가 삭제되면 통신은 더 이상 신뢰할 수 없습니다. 다음은 미들웨어 공급업체가 해결하려고 시도하는 문제의 모든 예입니다. 서브루틴 호출 또는 메서드 호출은 호출된 계산이 종료될 때까지 종료되지 않습니다. 반대로 비동기 메시지 전달은 요청 메시지를 보낸 후 상당한 시간에 응답이 도착할 수 있습니다. 동기 통신은 Synchronizer를 사용하여 비동기 통신 위에 구축 할 수 있습니다. 예를 들어 α-Synchronizer는 보낸 사람이 항상 수신자의 승인 메시지를 기다리도록 하여 작동합니다. 보낸 사람은 승인을 받은 후에만 다음 메시지를 보냅니다. 반면에 비동기 통신은 동기 통신을 기반으로 구축될 수도 있습니다.

예를 들어, 최신 마이크로커널은 일반적으로 동기 메시징 기본[인용 필요]만 제공하며, 도움말 스레드를 사용하여 비동기 메시징을 맨 위에 구현할 수 있습니다. 물론 발신자의 주소 공간에서 (절대) 주소가 원격 프로그램에 는 의미가 없기 때문에 분산 시스템에는 불가능합니다 (그러나 수신기에 정확한 복사본이 있는 경우 상대 주소를 실제로 사용할 수 있습니다. 을). 웹 브라우저와 웹 서버는 메시지 전달을 통해 통신하는 프로세스의 예입니다. URL은 프로세스의 내부 노출에 의존하지 않는 리소스를 참조하는 방법의 예입니다. 컴퓨터 과학에서 메시지 전달은 컴퓨터에서 동작(예: 프로그램 실행)을 호출하는 기술입니다. 호출 프로그램은 프로세스(행위자 또는 개체일 수 있음)에 메시지를 보내고 실행할 실제 코드를 선택하고 호출하는 프로세스 및 지원 인프라에 의존합니다. 메시지 전달은 프로세스, 서브루틴 또는 함수가 이름으로 직접 호출되는 기존 프로그래밍과 다릅니다. 메시지 전달은 동시성 및 개체 지향 프로그래밍의 일부 모델의 핵심입니다. 100대의 데스크톱 컴퓨터가 있는 바쁜 비즈니스 오피스에서 동기 메시지를 사용하여 서로 전자 메일을 전송한다고 가정해 보십시오. 사무실 시스템은 비동기 메시지 전달을 사용하지 않으므로 한 작업자가 컴퓨터를 끄면 작업자가 컴퓨터를 다시 켜서 단일 전자 메일을 처리할 때까지 다른 99대의 컴퓨터가 정지될 수 있습니다.

동기 메시지 전달은 Java 및 Smalltalk와 같은 일반적인 개체 지향 프로그래밍 언어입니다. 비동기 메시지 전달에는 동시에 실행되지 않을 수 있는 시스템에 대한 데이터를 저장하고 다시 전송하기 위한 추가 기능이 필요합니다. 비동기 메시지 전달은 일반적으로 시스템 및 데이터를 동기화하려고 할 때 발생하는 모든 복잡성이 중간 소프트웨어 수준에서 처리되도록 구현됩니다. 이러한 중간 수준을 지원하는 소프트웨어 제품을 개발하는 상용 공급업체는 일반적으로 소프트웨어를 “미들웨어”라고 부릅니다. 비동기 메시징을 지원하는 가장 일반적인 미들웨어 유형 중 하나를 MOM(메시지 지향 미들웨어)이라고 합니다.