RE: Posix и System V IPC - PullRequest
       45

RE: Posix и System V IPC

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

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

Ответы [ 4 ]

1 голос
/ 06 мая 2009

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

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

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

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

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

0 голосов
/ 06 мая 2009

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...