IPC II: Colas de Mensajes

Las colas de mensajes son una de las tres formas de comunicación entre procesos en unix (junto con los semáforos y las colas de procesos). Vamos a utilizar msgtool, una herramienta (similar a la de la práctica anterior shmtool) que nos permite obtener una cola de mensajes para enviar y recibir mensajes entre dos procesos. La práctica consta de dos partes:

Intercambio de mensajes

Se trata de hacer un codigo dual al de la práctica anterior pero con paso de mensajes en lugar de memoria compartida.

A partir del código de msgtool hacer un par de programas que se intercambien mensajes de un tamaño variable (y configurable como parámetro de entrada). Uno de los procesos irá leyendo bloques de un fichero (del tamaño indicado en la línea de comando y menor que el máximo permitido 4056 bytes ) y los irá mandando al segundo proceso que los irá escribiendo en otro fichero. El primer proceso cuando haya terminado de leer todo el fichero, mandará un mensaje de finalización y terminará. El segundo proceso terminará cuando reciba el mensaje de finalización.

Comparación con memoria compartida

Hacer un shell script que invoque varias veces a los procesos comunicantes (mediante memoria compartida y mediante intercambio de mensajes) con distintas longitudes de bloque y anote los tiempos.

Escriba la tabla de tiempos obtenidos y analice los resultados.

Referencias:

The linux Kernel

The Linux Programmer's Guide

Páginas de manual: ipcs, ipcrm, ftok, msgget, msgsnd, msgrcv, msgctl