общаться между 2 ПК с использованием общей памяти? - PullRequest
0 голосов
/ 22 апреля 2009

Мне нужно создать концепцию для связи между двумя компьютерами с использованием концепций программирования совместно используемой памяти или сокета TCP. Как я могу это сделать? Можно ли реализовать общую память в архитектуре клиент-сервер? Как мне это сделать?

Ответы [ 6 ]

7 голосов
/ 22 апреля 2009

Вы не можете общаться между двумя компьютерами, используя общую память, потому что они не разделяют память.

Вы должны использовать TCP-сокеты.

2 голосов
/ 29 мая 2009

Вы МОЖЕТЕ обмениваться данными с удаленной системой с общей памятью . Удаленный DMA является функцией более новых высокопроизводительных плат контроллера сетевого интерфейса (NIC).

Вот статья, в которой оценивается производительность 10 Гб Ethernet RDMA. Я знаю, что Infaband может также RDMA, другие, вероятно. Не будет ли хорошо, когда выйдет 802.11 XXX? Беспроводной RDMA? :)

1 голос
/ 22 апреля 2009

Я думаю, что вместо общей памяти то, что вы ищете, более правильно называется чем-то вроде «отражающей памяти».

С блоками Reflective Memory каждый компьютер в сети владеет блоком памяти. Каждый блок проходит по шине между всеми компьютерами с высокой скоростью. Каждый компьютер получает копию памяти со всех других компьютеров для чтения, но обычно может выполнять запись только в свою собственную память.

Таким образом, каждый компьютер может «видеть» состояние памяти на любом другом компьютере. Обычно вы видите такую ​​архитектуру в промышленных системах управления, которые распределяют контроль над физически отдельными машинами и хотят видеть общее состояние в режиме реального времени.

Что касается построения системы, вы можете начать с UDP-пакетов, которые просто выводят из строя состояние локального компьютера, и все остальные компьютеры читают эти данные.

0 голосов
/ 29 мая 2009
0 голосов
/ 23 апреля 2009

Возможно, вы захотите взглянуть на что-то вроде memcached , систему кэширования объектов с распределенной памятью.

Конечно, это все еще делается через TCP.

0 голосов
/ 22 апреля 2009

Язвительный ответ «Вы не можете сделать это, потому что компьютеры не делят память» - просто неправильно. Процессоры на одном компьютере не разделяют память , аппаратное и программное обеспечение реализует протоколы совместной памяти, чтобы создать иллюзию общей памяти.

Протоколы с общей памятью на разных процессорах очень похожи на протоколы с общей памятью на разных компьютерах, это та же проблема.

Поиск «распределенный кеш», «пространство кортежей» и «распределенная общая память» , это может дать пищу для размышлений. memcached - очень популярный продукт с открытым исходным кодом, на который вы можете взглянуть.

РЕДАКТИРОВАТЬ: Относительно комментария о "последовательной архитектуре кэша". Каждый процессор имеет свой собственный локальный кэш памяти (например, кэш L1). Существует целая куча «вещей», которые делают этот «кэш-связный» таким образом, что кажется, что каждый процессор выполняет чтение и запись в общую область памяти. Процессоры абсолютно положительно не записывают напрямую в единое пространство общей памяти. Концептуально проблема одинакова для разделяемой памяти между компьютерами.

...