Вопрос

  1. Какой IPC из очередей сообщений, общей памяти и семафоров легче всего преобразовать в сетевой IPC, а какой сложнее всего.

  2. Было бы проще преобразовать общую память System V в сетевой IPC или общую память Posix в сетевой IPC?

Это было полезно?

Решение

Как сказал Хенрик Густавссон:

  1. Очереди сообщений на сегодняшний день являются самым простым механизмом IPC для преобразования в сеть.Семафоры не предназначены для передачи данных, а разделяемая память обычно требует доступа, управляемого семафорами (или эквивалентного механизма), чтобы обеспечить надлежащий контроль даже на одной машине, не говоря уже о всей сети.Тем не менее, очереди сообщений System V, вероятно, являются наименее широко используемым механизмом IPC.

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

Другие советы

  1. Я бы сказал, что очереди сообщений основаны на том, что операции, которые вы выполняете в очереди сообщений, имеют почти идентичные сопоставления с операциями сокетов.
  2. Вероятно, не менее сложно, я бы посоветовал вам реализовать немного более сетевую абстракцию поверх shm... например, очередь сообщений.Общая память не очень подходит для работы в сети, хотя существуют некоторые ее сетевые реализации, но те, с которыми я столкнулся, действительно являются дырявыми абстракциями.
  1. Семафоры на самом деле не являются механизмом связи, они предназначены для синхронизации.Общая память может использоваться по сети (Распределенная общая память), но это довольно сложно реализовать.Очереди сообщений просты, поскольку они напрямую связаны с сетевыми сокетами.

  2. Вероятно, это будет очень похожая трудность;оба API похожи, просто у них другой интерфейс.

(1).Самый простой — очереди сообщений, а самый сложный — общая память.

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

(2).Проще преобразовать общую память Posix, чем общую память System V, в сетевой IPC.

Я думаю, это потому, что Posix поддерживает как семафоры, основанные на памяти, так и именованные семафоры, и не требует вмешательства ядра, тогда как System V требует вмешательства ОС.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top