Использование IPC для разных систем - PullRequest
1 голос
/ 18 сентября 2010

Hii,

Мне задали этот вопрос в недавнем интервью, на которое я не ответил, поскольку я был относительно новичком в МПК.

Как бы вы использовали IPC, если процессы выполняются в разных системах?

Ответы [ 3 ]

3 голосов
/ 18 сентября 2010

IPC означает просто межпроцессное взаимодействие.Существует много способов взаимодействия процессов. На самом деле нет разницы, являются ли два процесса локальными для одной и той же машины или нет.

Если вы разговариваете на разных компьютерах, вам не доступны некоторые формы, такие как Общая память, Сигнал, Канал, Файл с отображенной памятью или Семафор.(Существует промежуточное ПО, которое может имитировать разделяемую память, если вы действительно хотите идти по этому пути).

Некоторые из наиболее распространенных методов:

Файл Большинство операционных систем.
Сигнал Большинство операционных систем;некоторые системы, такие как Windows, только реализуют сигналы в библиотеке времени выполнения C и фактически не обеспечивают поддержку их использования в качестве метода IPC.
Сокет Большинство операционных систем.
Очередь сообщений Большинство операционных систем.
Pipe Все системы POSIX, Windows.
Именованный канал Все системы POSIX, Windows.
Семафор Все системы POSIX, Windows.
Общая память Все системы POSIX, Windows.
Передача сообщений (ничего не используется) Используется в парадигме MPI, Java RMI, CORBA, MSMQ, MailSlots и др.
Файл с отображением в памяти Все системы POSIX, Windows.Эта техника может нести риск состояния гонки, если используется временный файл.

Редактировать: Этот список взят из Википедия .Список так же хорош, как и любой.

0 голосов
/ 18 сентября 2010

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

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

Существуют сложности, например, что если один процесс написан на одном языке, а другой процесс написан на другом, как вы гарантируете, что поток данных совместим для каждого читаемого процесса, вы можете использовать буфер протокола Google для обработки это , доступна версия .NET, здесь .

Хотя в разной степени механизмы IPC прозрачны и работают только в одном домене, например, Windows для Windows, Linux для Linux, вы можете сделать это с Windows для Linux или и наоборот, хотя следует соблюдать осторожность, поскольку различия и функциональные возможности API диктуют результат согласованию схемы кодирования передачи данных.

0 голосов
/ 18 сентября 2010

IPC - это абстрактный термин, обозначающий любое межпроцессное взаимодействие между процессами, расположенными в одной или разных системах.

Если у вас есть процессы в разных системах, наиболее очевидными являются связи на основе TCP, включая инструменты IPC, которые используют TCP в качестве транспорта. Но, конечно, это не единственный способ обмена информацией.

...