Diferencia entre tuberías y colas de mensajes

Tuberías :
el sistema Unix utiliza tuberías para establecer la comunicación entre procesos. Una tubería proporciona un flujo unidireccional de datos. Una tubería se crea utilizando la función pipe().

Sintaxis:

#include int pipe(int fd);  

Una función pipe() devuelve dos descriptores de archivo, fd[O] y fd[1]. El fd[0] está abierto para leer y el fd[1] está abierto para escribir en la tubería. Los datos fluyen de un extremo de la tubería al otro extremo. La función de tubería devuelve ‘0’ en caso de éxito o -1 en caso de error.

Colas de mensajes :
una cola de mensajes permite que uno o más procesos escriban mensajes para que otros procesos los lean. Una cola de mensajes se implementa como una lista enlazada de mensajes y se almacena dentro del Kernel. Cada cola de mensajes se identifica mediante un identificador de cola de mensajes. El Kernel realiza un seguimiento de todas las colas de mensajes creadas en un sistema.

Diferencia entre tuberías y colas de mensajes:

S.NO Tubería Colas de mensajes
1. Pipe es una forma de Unix IPC que proporciona flujo de datos en una dirección. Las colas de mensajes son una forma de sistema VIPC que almacena una lista enlazada de mensajes
2. Al crear una canalización mediante la función pipe(), se devuelven dos descriptores de archivo, uno para leer y otro para escribir. La creación de colas de mensajes mediante la función msgget() devuelve un identificador de cola de mensajes.
3. Las tuberías y los FIFO son unidireccionales, es decir, los datos pueden fluir en una sola dirección. Las colas de mensajes son bidireccionales, es decir, los datos pueden fluir en ambas direcciones.
4. Con Pipes y FIFO, los datos deben obtenerse en orden de entrada, primero en salir. Con las colas de mensajes, los mensajes se pueden leer en cualquier orden que sea consistente con los valores asociados con los tipos de mensajes.
5. No se pueden asignar prioridades a los mensajes. Se pueden asignar prioridades a los mensajes asociando una prioridad a un tipo o rango de tipos.
6. Con Pipes y FIFOs, debe haber algún proceso esperando a que se escriba un mensaje sobre los pipes y FIFOs, es decir, deben existir tanto un proceso lector como un escritor. Con las colas de mensajes, un proceso puede escribir los mensajes en una cola y luego salir, de modo que otro proceso pueda leer los mensajes en un momento posterior.
7. Los conductos se eliminan por completo del sistema cuando finaliza el último proceso al que se hace referencia. La cola de mensajes y su contenido permanecen en el sistema al finalizar el proceso hasta que algún proceso que llame a mcgregor magento los lea o elimine específicamente, ejecutando el comando ipcrm(1) o reiniciando el sistema.
8. El número máximo de bytes que se pueden escribir en una tubería de FIFO es de 4096 bytes. El tamaño máximo de mensaje que se puede escribir en una cola de mensajes es de 8192 bytes.
9. Una de las principales ventajas de usar canalizaciones con nombre es que proporcionan una forma útil de enviar requests de una línea a una sesión en segundo plano de OpenEdge que ejecuta un procedimiento de controlador de mensajes. mejor presentación. Las colas de mensajes permiten la comunicación asincrónica, lo que significa que los puntos finales que producen y consumen mensajes interactúan con la cola, no entre sí.
10 Varios usuarios pueden enviar requests a través de la misma canalización con nombre y cada solicitud se elimina de la canalización a medida que se recibe. Mayor confiabilidad.

Publicación traducida automáticamente

Artículo escrito por ShivaTeja2 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *