Sistema V IPC vs POSIX IPC
sysv (4)
- ¿Cuáles son las diferencias entre
System V IPC
yPOSIX IPC
? - ¿Por qué tenemos dos estándares?
- ¿Cómo decidir qué funciones de IPC usar?
- Creo que la principal diferencia es que todo POSIX IPC es seguro para subprocesos, mientras que la mayoría de SysV IPC NO es [ 1 ].
- Debido a las guerras de Unix [ 2 ]. La especificación Single UNIX (SUS) [ 3 ], también conocida como POSIX, se creó para estandarizar interfaces en sistemas basados en Unix.
- Probablemente quiera POSIX. Depende exclusivamente de sus requisitos.
Ambos tienen las mismas herramientas básicas: 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 funciones de notificación para las colas de mensajes que Sys V no tiene. (Ver mq_notify()
)
Sys V IPC ha existido por más tiempo, lo que tiene un par de implicaciones prácticas:
En primer lugar, POSIX IPC tiene una implementación menos amplia. Escribí un contenedor 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 enumeradas en esa documentación, Sys V IPC está completamente implementado AFAIK, mientras que usted puede ver que POSIX IPC no lo está.
La segunda implicación de su edad relativa es que POSIX IPC se diseñó después de que se usó Sys V IPC por un tiempo. Por lo tanto, los diseñadores de la API POSIX pudieron aprender de las fortalezas y debilidades de la API de Sys V. Como resultado, la API POSIX es más simple y más fácil de usar IMO, y la recomiendo sobre la API de Sys V.
Debo señalar que nunca he realizado ninguna prueba de rendimiento para comparar los dos. Pensaría que la API anterior (Sys V) habría tenido más tiempo para mejorar el rendimiento, pero eso es solo una especulación que, por supuesto, no es un sustituto de las pruebas del mundo real.
En cuanto a por qué hay dos estándares: POSIX creó su estándar porque pensaban que era una mejora en el estándar Sys V. Pero si todos estuvieran de acuerdo en que POSIX IPC es mejor, muchos programas aún usan Sys V IPC y llevaría años transportarlos a POSIX IPC. En la práctica, no valdría la pena el esfuerzo, por lo que incluso si todos los nuevos códigos usaran POSIX IPC a partir de mañana, Sys V IPC se quedaría por muchos años.
No podemos decirle qué debe usar sin saber mucho más sobre lo que pretende hacer, pero las respuestas que tiene aquí le brindarán suficiente información para decidir por sí mismo.
System V IPC es anterior y POSIX IPC es más nuevo. Sin embargo, hay algunas diferencias para algunos aspectos. No siempre Posix es mejor que System V.
Los semáforos, las colas y la memoria compartida para Posix tienen nombres de cadena Ascii, mientras que en el Sistema V se dan con número entero.
Los semáforos System V permiten ser liberados automáticamente si el proceso muere (indicador SEM_UNDO semop). No hay tal cosa para Posix.
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 consultado / epolled / selected / kqueued.
- Systen V y POSIX IPC son dos implementaciones diferentes, pero relacionadas, de la misma cosa.
"Unix System V, comúnmente abreviado SysV (y generalmente pronunciado, aunque raramente escrito) como" Sistema Cinco ", es una de las primeras versiones comerciales del sistema operativo Unix. Originalmente fue desarrollado por American Telephone & Telegraph (AT & T) y lanzado por primera vez en 1983. "
-Wikipedia
"POSIX o" Interfaz de sistema operativo portátil [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ó 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 este IPC. La mayoría de los vendedores se están moviendo haciaPOSIX
.
Programación en red Unix: Interprocess Communications v. 2 de Richard Stevens da una buena mirada a ambos.
Programación de red Unix http://ecx.images-amazon.com/images/I/51V1DSSA8NL._SL500_AA300_.jpg