Система V IPC против POSIX IPC - PullRequest
77 голосов
/ 03 января 2011
  1. В чем различия между System V IPC и POSIX IPC?
  2. Почему у нас есть два стандарта?
  3. Как решить, какие функции IPC использовать?

Ответы [ 4 ]

97 голосов
/ 04 января 2011

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

Sys V IPC существует дольше, что имеет несколько практических последствий -

Во-первых, POSIX IPC применяется менее широко. Я написал оболочку Python для POSIX IPC, и в в ее документации перечислено, что я знаю о реализации POSIX IPC на различных платформах .

На всех платформах, перечисленных в этой документации, Sys V IPC полностью реализован AFAIK, в то время как вы можете видеть, что POSIX IPC нет.

Вторым следствием их относительного возраста является то, что POSIX IPC был разработан после того, как Sys V IPC некоторое время использовался. Таким образом, разработчики POSIX API смогли извлечь уроки из сильных и слабых сторон Sys V API. В результате POSIX API становится проще и легче использовать IMO, и я рекомендую его через Sys V API.

Должен заметить, что я никогда не проводил никаких тестов производительности, чтобы сравнить их. Я думаю, что старый API (Sys V) имел бы больше времени быть настроенным на производительность, но это всего лишь предположение, которое, конечно, не заменит реальное тестирование.

Относительно того, почему существует два стандарта - POSIX создал их стандарт, потому что они думали, что это улучшение по стандарту Sys V. Но если бы все согласились с тем, что POSIX IPC лучше, многие многие программы по-прежнему используют Sys V IPC, и для их переноса на POSIX IPC потребуются годы. На практике это не стоило бы усилий, поэтому, даже если весь новый код будет использовать POSIX IPC с завтрашнего дня, Sys V IPC останется в течение многих лет.

Мы не можем сказать вам, что вы должны использовать, не зная намного больше о том, что вы собираетесь делать, но ответы, которые у вас есть, должны дать вам достаточно информации, чтобы принять решение самостоятельно.

19 голосов
/ 03 января 2011
  1. Я считаю, что основное отличие состоит в том, что все POSIX IPC являются поточно-ориентированными, тогда как большинство SysV IPC НЕ [ 1 ].
  2. Из-за Unix войн [ 2 ]. Спецификация Single UNIX (SUS) [ 3 ], также известная как POSIX, была создана для стандартизации интерфейсов в системах на основе Unix.
  3. Вы, вероятно, хотите POSIX. Зависит исключительно от ваших требований.
5 голосов
/ 15 ноября 2016

System V IPC старше, а POSIX IPC новее. Однако есть некоторые различия по некоторым аспектам. Не всегда Posix лучше System V.

  1. Семафоры, очереди и общая память для Posix имеют строковые имена Ascii, в то время как в System V они задаются с целым числом.

  2. Семафоры System V позволяют автоматически освобождаться, если процесс умирает (флаг semop SEM_UNDO). Для Posix такого нет.

  3. В Linux и FreeBSD есть большое преимущество очередей posix, поскольку обработчик, предоставляемый mq_open, в основном является дескриптором файла, который можно опрашивать / отправлять / выбирать / отбирать.

0 голосов
/ 03 января 2011
  • Systen V и POSIX IPC - это две разные, но связанные реализации одной и той же вещи.

"Unix System V, обычно сокращенно обозначаемая как SysV (и обычно произносится, хотя и редко пишется как" System Five "), является одной из первых коммерческих версий операционной системы Unix. Первоначально она была разработана American Telephone & Telegraph ( AT & T) и впервые выпущен в 1983 году. "

-Wikipedia

«POSIX или« Интерфейс переносимой операционной системы [для Unix] »- это название семейства связанных стандартов, определенных IEEE для определения интерфейса прикладного программирования (API)»

-Wikipedia

  • Система V была там раньше. POSIX развился из инициативы стандартизации IEEE.

  • GNU / Linux partially совместим с POSIX. Какой из них использовать, зависит от того, с какой ОС вы используете этот IPC. Большинство поставщиков движутся к POSIX.

Сетевое программирование Unix: Межпроцессное взаимодействие v. 2 Ричарда Стивенса дает хорошее представление обоим из них.

Сетевое программирование Unix http://ecx.images -amazon.com / images / I / 51V1DSSA8NL._SL500_AA300_.jpg

...