Система V IPC против POSIX IPC
- Каковы различия между
System V IPC
а такжеPOSIX IPC
? - Почему у нас есть два стандарта?
- Как решить, какие функции IPC использовать?
4 ответа
Оба имеют одинаковые базовые инструменты - семафоры, разделяемую память и очереди сообщений. Они предлагают немного другой интерфейс для этих инструментов, но основные концепции те же. Одно заметное отличие состоит в том, что 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 будет оставаться в течение многих лет.
Мы не можем сказать вам, что вы должны использовать, не зная намного больше о том, что вы собираетесь делать, но ответы, которые у вас есть, должны дать вам достаточно информации, чтобы принять решение самостоятельно.
- Я считаю, что основное отличие состоит в том, что все POSIX IPC являются поточно-ориентированными, в то время как большинство SysV IPC НЕ [ 1].
- Из-за Unix войн [ 2]. Спецификация Single UNIX (SUS) [ 3], также известная как POSIX, была создана для стандартизации интерфейсов в системах на основе Unix.
- Вы, вероятно, хотите POSIX. Зависит исключительно от ваших требований.
System V IPC старше, а POSIX IPC новее. Однако есть некоторые различия по некоторым аспектам. Не всегда Posix лучше, чем System V.
Семафоры, очереди и общая память для Posix имеют строковые имена Ascii, в то время как в System V они даются с целым числом.
Семафоры System V позволяют автоматически освобождаться, если процесс умирает (флаг semop SEM_UNDO). Для Posix такого нет.
В Linux и FreeBSD есть большое преимущество очередей posix, так как обработчик, предоставляемый mq_open, в основном является файловым дескриптором, который можно опрашивать / отправлять / выбирать / отбирать.
- 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: Interprocess Communications v. 2 Ричарда Стивенса дает хорошее представление обо всем этом.
http://ecx.images-amazon.com/images/I/51V1DSSA8NL._SL500_AA300_.jpg