문제

내가 틀렸다면 나를 교정하지만, 여기서 전에 묻지 않은 것에 놀랐습니다 ...

도움이 되었습니까?

해결책

매우 간단한 차이입니다. 공유 메모리 모델에서 여러 작업자가 모두 동일한 데이터에서 작동합니다. 이것은 병렬 프로그래밍에서 공통적 인 동시성 문제를 많이 열어줍니다.

메시지 전달 시스템은 작업자가 메시징 시스템을 통해 의사 소통 할 수 있도록합니다. 메시지는 모든 사람이 분리되어 근로자가 서로의 데이터를 수정할 수 없도록합니다.

유사하게, 우리는 프로젝트에서 팀과 함께 일하고 있다고 가정 해 봅시다. 하나의 모델에서, 우리는 모두 테이블 주위에 붐비고 모든 논문과 데이터가 배치되었습니다. 우리는 테이블에서 물건을 바꾸어 만 의사 소통 할 수 있습니다. 우리는 모든 사람이 동일한 데이터에서 한 번에 작동하지 않도록주의해야합니다. 그렇지 않으면 혼란스러워지고 상황이 혼합 될 것입니다.

메시지 전달 모델에서 우리는 모두 자신의 종이 세트와 함께 책상에 앉아 있습니다. 우리가 원할 때, 우리는 다른 사람에게 "메시지"로 종이를 전달할 수 있으며, 그 근로자는 이제 그들이 원하는 것을 할 수 있습니다. 우리는 우리 앞에있는 모든 것에 만 접근 할 수 있으므로, 우리는 누군가가 그들을 합산하는 동안 숫자 중 하나를 넘어서 숫자 중 하나를 변경할 것이라고 걱정할 필요가 없습니다.

좋아, 어리석은 비유!

다른 팁

  1. 공유 메모리 모델에서 메모리는 협력 프로세스에 의해 공유되는데,이 프로세스는 데이터를 읽고 쓰면 정보를 교환 할 수 있지만 메시지 전달 커뮤니케이션은 협력 프로세스간에 교환 된 메시지를 통해 발생합니다.
  2. 공유 메모리는 프로세스를 동시에 실행하는 데 도움이되지만 메시지 전달은 할 수 없습니다.
  3. 메시지 전달 시설에는 두 가지 작업이 있습니다 : Send (메시지) 및 수신 (메시지). 고정 또는 가변 크기가있는 프로세스.
  4. 메시지 전달은 충돌을 피할 필요가 없기 때문에 더 적은 양의 데이터를 교환하는 데 유용합니다. 메시지 전달은 또한 공정 간 통신을위한 공유 메모리보다 구현하기가 더 쉽습니다.
  5. 공유 메모리 시스템에서는 공유 메모리 지역을 설정하기 위해서만 시스템 호출이 필요합니다. 공유 메모리가 확립되면 모든 액세스는 일상적인 메모리 액세스로 취급되며 커널의 도움이 필요하지 않습니다.

더 빠르게

공유 메모리는 컴퓨터 내에서 메모리 속도에서 수행 할 수 있으므로 통신의 최대 속도와 편의성을 허용합니다. 메시지 통과 시스템이 일반적으로 시스템 호출을 사용하여 구현되므로 커널 개입의 시간이 많이 걸리는 작업이 필요하기 때문에 공유 메모리는 메시지 전달보다 빠릅니다.

메시지 전달 모델 (예 : Erlang)에는 공유 상태가 없습니다. 모든 동기화 및 통신은 메시지를 교환하여 수행됩니다. 공유 메모리 모델은 반음 또는 유사한 공유 메모리 블록에 대한 읽기/쓰기를 통해 통신합니다.

메시지 전달은 데이터를 정당화하는 좋은 방법이지만 더 빠른 통신을위한 응답 시간이 느려지지만 공유 메모리 모델 데이터는 하나의 메모리에서 추출되며 작업 그룹은 동일한 데이터를 통해 다른 작업을 수행 할 수 있습니다.

빠른 응답 시간이 필요한 일부 애플리케이션의 경우 메시지 전달 시스템의 처리량이 너무 낮을 수 있지만 빠른 속도 또는 실시간 처리가 필요한 경우 공유 메모리 시스템을 사용할 수 있습니다.

당신은 요청하고 있지만 차이 메시지 통과 모델과 공유 메모리 모델과 이미 성능, 정보 교환 방법 및 동시성 문제에 대한 좋은 답변을 얻었으므로 다음을 지적하고 싶습니다.

있을 수있다 아니요 계산 가능성과 관련하여 (특정 조건 하에서) 그들 사이의 근본적인 차이.

기본 메시지 통과 시스템을 통해 공유 메모리를 시뮬레이션 할 수 있습니다. 따라서 공유 메모리 모델을 비동기 분산 메시지 통과 시스템에서 알고리즘을 설계하기위한 고급 언어로 볼 수 있습니다.

특히,이 논문 abd@jacm'95 것을 보여줍니다

원자, 단일 작가 (및 다중 작가) 멀티 리더 레지스터를 기반으로 한 대기 무료 알고리즘은 적어도 대부분의 프로세서에 결함이없고 연결되어있는 경우 메시지 통과 시스템에서 자동으로 모방 될 수 있습니다. 이러한 에뮬레이션에 의해 도입 된 오버 헤드는 시스템의 프로세서 수에서 다항식입니다.

메시지 전달 및 공유 메모리를 구별하려면 다섯 가지를 고려하십시오.

  1. 커뮤니케이션 :- 메시지 통과의 경우, 의사 소통은 의사 소통을하는 프로세스를 좋아하는 프로그래머에 의존합니다. 그러나 공유 메모리 통신의 경우 자동으로 수행됩니다.
  2. 데이터 배포 : -MP (수동) SM (자동)
  3. H/W 지원 :- MP (단순)
  4. 정확성 : -MP (어려운) SM (덜 어려움)
  5. 성능 : -MP (어려운) SM (매우 어려운)`

이미 주어진 답변은 유익하지만 대부분의 공유 메모리가 메시지 전달보다 빠른 아이디어는 실제로 순진한 진술입니다. 유용한 일을 수행하는 실제 시스템에서 공유 메모리 액세스는 별도의 스레드에서 액세스를 제어하기 위해 잠금 메커니즘이 필요하며, 이는 메시지 전달을 사용하여 동일한 시스템을 구현하는 것보다 거의 항상 느리게됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top