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