Система V IPC vs POSIX IPC




  1. В чем разница между System V IPC и POSIX IPC ?

  2. почему у нас есть два стандарта ?

  3. как решить, какие функции IPC использовать ?

707   4  

4 ответов:

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

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

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

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

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

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

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

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

  1. Я считаю, что основное различие заключается в том, что все POSIX IPC потокобезопасны, в то время как большинство SysV IPC не [1].
  2. из-за Unix wars [2]. Элемент Single Unix specification (SUS) [3], Он же POSIX, был создан для стандартизации интерфейсов на Unix-системах.
  3. вы, вероятно, хотите POSIX. Зависит исключительно от ваших требований.

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

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

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

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

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

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

Википедии

"POSIX или "Portable Operating System Interface [for Unix]" - это имя семейства связанных стандартов, определенных IEEE для определения интерфейса прикладного программирования (API)"

Википедии

  • Systm V был там раньше. В POSIX возник инициативы по стандартизации по стандарту IEEE.

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

Unix Network Programming: Interprocess Communications V. 2 by Richard Stevens дает хороший взгляд в оба из них.

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

Comments

    Ничего не найдено.