RE: Posix и System V IPC

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

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


person Anonymous    schedule 30.04.2009    source источник


Ответы (4)


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

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

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

person Jonathan Leffler    schedule 05.05.2009

  1. Я бы сказал, что очереди сообщений однозначно основаны на том, что операции, которые вы выполняете с очередью сообщений, имеют почти идентичные сопоставления с операциями сокетов.
  2. Вероятно, столь же сложно, я бы посоветовал вам реализовать немного более дружественную к сети абстракцию поверх shm ... например, очередь сообщений. Общая память не очень подходит для работы в сети, хотя есть некоторые ее реализации с поддержкой сети, но те, с которыми я столкнулся, действительно являются дырявыми абстракциями.
person Henrik Gustafsson    schedule 05.05.2009

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

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

person Zifre    schedule 05.05.2009

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

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

(2). Совместную память Posix легче преобразовать, чем разделяемую память System V, в сетевую IPC.

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

person Anonymous    schedule 05.05.2009