Sistema V IPC vs POSIX IPC


  1. ¿cuáles son las diferencias entre System V IPC y POSIX IPC ?
  2. ¿Por qué tenemos dos estándares ?
  3. ¿Cómo decidir qué funciones IPC utilizar ?
Author: ismail, 2011-01-03

4 answers

Ambos tienen las mismas herramientas básicas sem semáforos, memoria compartida y colas de mensajes. Ofrecen una interfaz ligeramente diferente a esas herramientas, pero los conceptos básicos son los mismos. Una diferencia notable es que POSIX ofrece algunas características de notificación para las colas de mensajes que Sys V no ofrece. (Véase mq_notify().)

Sys V IPC ha existido durante más tiempo, lo que tiene un par de implicaciones prácticas {

Primero, POSIX IPC está menos implementado. Escribí un wrapper de Python para POSIX IPC y su documentación enumera lo que sé sobre las implementaciones POSIX IPC en varias plataformas.

En todas las plataformas listadas en esa documentación, Sys V IPC está completamente implementado AFAIK, mientras que puede ver que POSIX IPC no lo está.

La segunda implicación de su edad relativa es que POSIX IPC fue diseñado después de Sys V IPC había sido utilizado por un tiempo. Por lo tanto, los diseñadores de la API POSIX pudieron aprender de las fortalezas y debilidades de la API Sys V. Como resultado, la API POSIX es más simple y más fácil de usar IMO, y lo recomiendo sobre la API Sys V.

Debo tener en cuenta que nunca he realizado ninguna prueba de rendimiento para comparar los dos. Creo que la API más antigua (Sys V) habría tenido más tiempo para ajustar el rendimiento, pero eso es solo especulación que, por supuesto, no sustituye a las pruebas del mundo real.

En cuanto a por qué hay dos estándares POSI POSIX creó su estándar porque pensaron que era una mejora en el Sys V estándar. Pero si todos estuvieran de acuerdo en que POSIX IPC es mejor, muchos muchos programas todavía usan Sys V IPC y tomaría años portarlos todos a POSIX IPC. En la práctica, no valdría la pena el esfuerzo, por lo que incluso si todo el nuevo código utilizara POSIX IPC a partir de mañana, Sys V IPC se quedaría por muchos años.

No podemos decirle cuál debe usar sin saber mucho más sobre lo que pretende hacer, pero las respuestas que tiene aquí deben darle suficiente información para decidir sobre su propio.

 87
Author: Philip Semanchuk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-04 01:21:17
  1. Creo que la principal diferencia es que todo POSIX IPC es seguro para subprocesos, mientras que la mayoría de SysV IPC NO lo es [1].
  2. Debido a Unix wars [2]. La especificación única de UNIX (SUS) [3], también conocido como POSIX, fue creado para estandarizar interfaces en sistemas basados en Unix.
  3. Probablemente quieras POSIX. Depende exclusivamente de sus necesidades.
 17
Author: jweyrich,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-04 17:44:31

System V IPC es más antiguo y POSIX IPC es más nuevo. Sin embargo, hay algunas diferencias para algunos aspectos. No siempre Posix es mejor que System V.

  1. Los semáforos, colas y memoria compartida para Posix tienen nombres de cadena Ascii, mientras que en System V estos se dan con número entero.

  2. Los semáforos System V permiten ser liberados automáticamente si el proceso muere (semop SEM_UNDO flag). No existe tal cosa para Posix.

  3. En Linux y FreeBSD hay una gran ventaja de las colas posix, ya que el manejador dado por mq_open es básicamente un descriptor de archivo que puede ser sondeado / epolled/selected / kqueued.

 5
Author: Madars Vi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-19 13:00:02
  • Systen V y POSIX IPC son dos implementaciones diferentes, pero relacionadas de la misma cosa.

"Unix System V, comúnmente abreviado SysV (y usualmente pronunciado-aunque raramente escrito-como" System Five"), es una de las primeras versiones comerciales del sistema operativo Unix. Fue desarrollado originalmente por American Telephone&Telegraph (AT & T) y lanzado por primera vez en 1983."

-Wikipedia

Interfaz de Sistema Operativo Portátil"POSIX o " [para Unix]"es el nombre de una familia de estándares relacionados especificados por el IEEE para definir la interfaz de programación de aplicaciones (API)"

-Wikipedia

  • Systm V estuvo allí antes. POSIX evolucionó a partir de la iniciativa de estandarización de IEEE.

  • GNU / Linux es partially compatible con POSIX. Cuál usar depende del sistema operativo que esté utilizando esta IPC. La mayoría de los proveedores se están moviendo hacia POSIX.

Programación de Red Unix: Interproceso Comunicaciones v. 2 por Richard Stevens da una buena mirada a ambos.

Programación de Redes Unix http://ecx.images-amazon.com/images/I/51V1DSSA8NL._SL500_AA300_.jpg

 -2
Author: Jestin Joy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-01-03 09:41:49