2009-04-22 4 views

답변

7

공유 메모리를 사용하는 두 컴퓨터 간에는 메모리를 공유하지 않으므로 통신 할 수 없습니다.

TCP 소켓을 사용해야합니다.

+1

플래시 스틱에서 할 수 있습니다. – Prankster

+0

두 대의 컴퓨터가 메모리를 공유하지 않는다는 것을 알고 있습니다. "클라이언트 서버 아키텍처에서 공유 메모리를 구현하는 것이 가능합니까? 어떻게해야합니까? 그것에 대해? " 대답은 "예, 가능한 공유 공유 메모리 찾기"입니다. –

+1

분산 공유 메모리는 소켓보다 훨씬 어렵고 느립니다. – Zifre

1

"공유 메모리"라기보다 "반사 메모리"와 같은 것을 더 적절하게 찾고 있습니다.

반사 형 메모리 블록에서는 네트워크의 각 컴퓨터가 한 블록의 메모리를 소유합니다. 모든 블록은 고속의 속도로 모든 컴퓨터 사이의 버스 주변에 퍼팅됩니다. 각 컴퓨터는 읽기를 위해 다른 모든 컴퓨터에서 메모리 복사본을 가져 오지만 일반적으로 자체 메모리에만 쓸 수 있습니다.

따라서 각 컴퓨터는 다른 모든 컴퓨터의 메모리 상태를 "볼"수 있습니다. 일반적으로 물리적으로 분리 된 기계를 통해 제어를 분배하고 거의 실시간으로 전반적인 상태를보고 싶어하는 산업 제어 시스템에서 이러한 종류의 아키텍처를 볼 수 있습니다.

시스템을 구축하는 경우 로컬 컴퓨터의 상태를 폭발시키는 UDP 패킷으로 시작하고 다른 모든 컴퓨터에서 해당 데이터를 읽을 수 있습니다.

0

컴퓨터가 메모리를 공유하지 않기 때문에 "당신이 할 수없는 일"이라는 대답은 아주 잘못되었습니다. 단일 컴퓨터 내의 프로세서는 메모리을 공유하지 않으며 하드웨어 및 소프트웨어는 공유 메모리를 제공하기 위해 공유 메모리 프로토콜을 구현합니다.

프로세서를 통한 공유 메모리 프로토콜은 컴퓨터간에 공유 메모리 프로토콜과 매우 유사하며 동일한 문제입니다.

"분산 캐시" "튜플 공간"을 검색하면 "distributed shared memory"은 생각할만한 음식을 제공 할 수 있습니다. memcached은 매우 인기있는 오픈 소스 제품 중 하나입니다.

편집 : "캐시 일관된 아키텍처"에 대한 의견. 각 프로세서에는 자체 로컬 캐시 메모리 (예 : L1 캐시)가 있습니다. 이 "캐시 일관성"을 발생시켜 각 프로세서가 공유 메모리 공간을 읽고 쓰는 것처럼 보일 정도로 많은 "물건"이 있습니다. 프로세서는 절대적으로 긍정적 인 단일 공유 메모리 공간에 직접 쓰지 않습니다. 이 문제는 컴퓨터간에 공유 메모리에 대해 개념적으로 동일합니다.

+1

이것은 틀렸다. 캐시 일관된 아키텍처 (예 : x86)에서 동일한 컴퓨터의 프로세서는 메모리를 공유합니다. – Zifre

+0

좋아, 그럼 L1 캐시 란 무엇입니까? –

+0

프로세서 별 캐시입니다. 프로세서는 여전히 주 메모리를 공유하고 동일한 메모리 위치에서 L1 캐시를 채 웁니다. –

0

분산 메모리 개체 캐싱 시스템 인 memcached을 살펴볼 수 있습니다.

허용됨, 이것은 여전히 ​​TCP를 통해 수행됩니다.

2

사용자 공유 메모리가있는 원격 시스템과 통신합니다.원격 DMA은 최신 고성능 네트워크 인터페이스 컨트롤러 카드 (NIC)의 기능입니다.

다음은 RDMA 성능이 10 Gb ethernet 인 것으로 평가 된 논문입니다. 나는 infinaband도 RDMA, 다른 가능성이 있음을 압니다. 802.11 XXX가 나올 때 좋지 않을까요? 무선 RDMA? :)

+0

링크가 죽었으니 wikipedia에 다음 기사가 있습니다 : http://en.wikipedia.org/wiki/Remote_direct_memory_access – RandomNickName42

관련 문제