2012-06-15 31 views

Respuesta

14

<sys/sem.h> proporciona la interfaz para los semáforos XSI (originalmente Unix System V). Estos no son parte del estándar POSIX estándar (están en la opción XSI que es principalmente para la compatibilidad tradicional con Unix) y aunque no se consideran obsoletos/obsoletos, muchos programadores los consideran obsoletos, y POSIX informa:

APLICACIÓN USO

POSIX Realtime Extension define interfaces alternativas para la comunicación entre procesos. Los desarrolladores de aplicaciones que necesiten usar IPC deberían diseñar sus aplicaciones para que los módulos que utilizan las rutinas IPC descritas en XSI Interprocess Communication puedan modificarse fácilmente para usar las interfaces alternativas.

Las ventajas y desventajas de los semáforos XSI es que son, y deben ser, debido a la forma en que funciona su interfaz, los objetos del espacio del núcleo. El principal beneficio que esto le da es la capacidad de configurarlos para que el kernel pueda realizar operaciones de retroceso si el proceso se cierra o se cancela inesperadamente. El costo principal es que cada operación es un viaje de ida y vuelta al espacio del núcleo, es decir, son muy lentos. Las interfaces para usarlas también son muy obtusas y difíciles de aprender, y son necesariamente un recurso compartido de proceso, lo que significa que debe lidiar con un espacio de nombres compartido y problemas de limpieza de recursos.

<semaphore.h> define semáforos POSIX, que están diseñados de tal manera que se pueden implementar por completo en el espacio de usuario, excepto en el caso contundente donde el proceso llamará al núcleo para ir a dormir. Su rendimiento debería ser casi óptimo (es decir, casi imposible de superar, haciendo lo propio), pero no son tan completos como los semáforos XSI. Los semáforos POSIX también le ofrecen la opción de elegir un semáforo de proceso local (para usarlo en un entorno de subprocesos múltiples o, incluso, en algunas condiciones, un manejador de señal en un programa de subproceso único) o un proceso compartido, y en este último caso, también tiene la opción de dejar que el sistema se encargue de asignarlo en un espacio de nombres compartido por nombre, o de obtener memoria compartida usted mismo e inicializarla en la memoria compartida.

4

No son el mismo/reemplazo uno para el otro sino dos implementaciones diferentes y proporcionan un conjunto diferente de funciones. semaphore.h es la implementación de POSIX y sys/sem.h es la implementación de sysV. POSIX es considered para que sea más ligero y se use ampliamente.

Cuestiones relacionadas