공유 메모리 또는 TCP 소켓 프로그래밍 개념을 사용하여 두 컴퓨터간에 통신하는 개념을 구축해야합니다. 어떻게해야합니까? 클라이언트 서버 아키텍처에서 공유 메모리를 구현하는 것이 가능합니까? 어떻게해야합니까?공유 메모리를 사용하여 2 PC에서 btw 통신 하시겠습니까?
답변
공유 메모리를 사용하는 두 컴퓨터 간에는 메모리를 공유하지 않으므로 통신 할 수 없습니다.
TCP 소켓을 사용해야합니다.
"공유 메모리"라기보다 "반사 메모리"와 같은 것을 더 적절하게 찾고 있습니다.
반사 형 메모리 블록에서는 네트워크의 각 컴퓨터가 한 블록의 메모리를 소유합니다. 모든 블록은 고속의 속도로 모든 컴퓨터 사이의 버스 주변에 퍼팅됩니다. 각 컴퓨터는 읽기를 위해 다른 모든 컴퓨터에서 메모리 복사본을 가져 오지만 일반적으로 자체 메모리에만 쓸 수 있습니다.
따라서 각 컴퓨터는 다른 모든 컴퓨터의 메모리 상태를 "볼"수 있습니다. 일반적으로 물리적으로 분리 된 기계를 통해 제어를 분배하고 거의 실시간으로 전반적인 상태를보고 싶어하는 산업 제어 시스템에서 이러한 종류의 아키텍처를 볼 수 있습니다.
시스템을 구축하는 경우 로컬 컴퓨터의 상태를 폭발시키는 UDP 패킷으로 시작하고 다른 모든 컴퓨터에서 해당 데이터를 읽을 수 있습니다.
컴퓨터가 메모리를 공유하지 않기 때문에 "당신이 할 수없는 일"이라는 대답은 아주 잘못되었습니다. 단일 컴퓨터 내의 프로세서는 메모리을 공유하지 않으며 하드웨어 및 소프트웨어는 공유 메모리를 제공하기 위해 공유 메모리 프로토콜을 구현합니다.
프로세서를 통한 공유 메모리 프로토콜은 컴퓨터간에 공유 메모리 프로토콜과 매우 유사하며 동일한 문제입니다.
"분산 캐시" "튜플 공간"을 검색하면 "distributed shared memory"은 생각할만한 음식을 제공 할 수 있습니다. memcached은 매우 인기있는 오픈 소스 제품 중 하나입니다.
편집 : "캐시 일관된 아키텍처"에 대한 의견. 각 프로세서에는 자체 로컬 캐시 메모리 (예 : L1 캐시)가 있습니다. 이 "캐시 일관성"을 발생시켜 각 프로세서가 공유 메모리 공간을 읽고 쓰는 것처럼 보일 정도로 많은 "물건"이 있습니다. 프로세서는 절대적으로 긍정적 인 단일 공유 메모리 공간에 직접 쓰지 않습니다. 이 문제는 컴퓨터간에 공유 메모리에 대해 개념적으로 동일합니다.
이것은 틀렸다. 캐시 일관된 아키텍처 (예 : x86)에서 동일한 컴퓨터의 프로세서는 메모리를 공유합니다. – Zifre
좋아, 그럼 L1 캐시 란 무엇입니까? –
프로세서 별 캐시입니다. 프로세서는 여전히 주 메모리를 공유하고 동일한 메모리 위치에서 L1 캐시를 채 웁니다. –
분산 메모리 개체 캐싱 시스템 인 memcached을 살펴볼 수 있습니다.
허용됨, 이것은 여전히 TCP를 통해 수행됩니다.
사용자 은 공유 메모리가있는 원격 시스템과 통신합니다.원격 DMA은 최신 고성능 네트워크 인터페이스 컨트롤러 카드 (NIC)의 기능입니다.
다음은 RDMA 성능이 10 Gb ethernet 인 것으로 평가 된 논문입니다. 나는 infinaband도 RDMA, 다른 가능성이 있음을 압니다. 802.11 XXX가 나올 때 좋지 않을까요? 무선 RDMA? :)
링크가 죽었으니 wikipedia에 다음 기사가 있습니다 : http://en.wikipedia.org/wiki/Remote_direct_memory_access – RandomNickName42
- 1. PHP와 공유 메모리를 사용하고 있습니까?
- 2. NSStream을 사용하여 PHP와 통신 하시겠습니까?
- 3. 가속도계 값을 사용하여 PC에서 FPS를 제어 하시겠습니까?
- 4. Virtual PC에서 Windows CE 가상 컴퓨터로 파일을 공유 하시겠습니까?
- 5. 유닉스에서 공유 메모리를 사용하는 경우
- 6. 새 프로세스를 만들고 공유 메모리를 사용하여 통신하는 방법
- 7. 안드로이드 2 에뮬레이터와 통신
- 8. iPhone 앱 전화 번호를 사용하여 통신 하시겠습니까?
- 9. Mercurial이 2 대의 PC에서 도움이 될까요?
- 10. 가상 PC와의 COM 포트 통신 (파트 2)
- 11. 응용 프로그램간에 통신 하시겠습니까?
- 12. C로 iDevice와 통신 하시겠습니까?
- 13. 차이점 btw org.hibernate.jmx.HibernateService 및 org.jboss.hibernate.jmx.Hibernate
- 14. 차량 2 차량 통신 질문
- 15. 2 개의 데이터베이스 간 통신
- 16. C를 사용하여 Windows PC에서 모든 I/O 포트를 비활성화 하시겠습니까?
- 17. PECL없이 PHP를 사용하여 PC에서 고유 식별자를 추출 하시겠습니까?
- 18. 클래스간에 캔버스를 공유 하시겠습니까?
- 19. 프로세스가 공유 메모리를 처리하고 pthread_barrier가 어떻게 안전합니까?
- 20. 공유 메모리를 사용할 때 하위 프로세스가 중단됩니까?
- 21. 공유 메모리를 할당하는 중 오류가 발생했습니다.
- 22. 이중 포인터에 메모리를 지정 하시겠습니까?
- 23. std :: vector에서 메모리를 해제 하시겠습니까?
- 24. VB.NET을 사용하여 PC에서 SMS를 보내시겠습니까?
- 25. 2 개의 Firefox 부가 기능 (교차 확장 통신) 간의 통신
- 26. 프로그램 간 공유 메모리 및 통신
- 27. 할당되지 않은 메모리를 오류없이 사용 하시겠습니까?
- 28. 2 개의 소켓에 연결 하시겠습니까?
- 29. RMI 2 대의 RMI 서버가없는 양방향 통신
- 30. SQL : 2 조인을 사용하여 계산 하시겠습니까?
플래시 스틱에서 할 수 있습니다. – Prankster
두 대의 컴퓨터가 메모리를 공유하지 않는다는 것을 알고 있습니다. "클라이언트 서버 아키텍처에서 공유 메모리를 구현하는 것이 가능합니까? 어떻게해야합니까? 그것에 대해? " 대답은 "예, 가능한 공유 공유 메모리 찾기"입니다. –
분산 공유 메모리는 소켓보다 훨씬 어렵고 느립니다. – Zifre