Está en la página 1de 4

Sincronizacin de procesos por mensajes La alternativa a la sincronizacin y comunicacin mediante variables compartidas se basa en el paso de mensajes.

La aproximacin esta tipificada por el uso de una nica construccin, tanto para la sincronizacin como para la comunicacin. En esta amplia categora existe, sin embargo, una gran variedad de modelos de lenguaje. Esta variedad en la sem ntica del paso de mensajes surge, y esta dominada, por tres temas! "#$ El modelo de sincronizacin. "%$ El m&todo de nombrado de los procesos. "'$ La estructura del mensaje. Sincronizacin de procesos ! En todos los sistemas basados en mensajes, existe un tipo de sincronizacin implcita! un proceso receptor no puede obtener un mensaje antes de (ue dic)o mensaje )aya sido enviado. *un(ue esto es bastante obvio, )abr (ue compararlo con el uso de una variable compartida+ en este caso, un proceso receptor puede leer una variable y no saber si )a sido escrita por el proceso emisor. Si un proceso ejecuta una recepcin de mensaje incondicional cuando no existe ningn mensaje disponible, entonces permanecer suspendido )asta (ue llegue el mensaje. ,e la sem ntica de la operacin -enva. surgen las variaciones en el modelo de sincronizacin de procesos, (ue pueden ser clasificadas como sigue! / *sncrona "o sin espera$! el emisor continua inmediatamente, independientemente de si se )a recibido o no el mensaje. / Sincrona! el emisor continua solo cuando se )a recibido el mensaje. / 0nvocacin remota! el emisor continua nicamente cuando se )a devuelto una respuesta desde el receptor. El -envo. de la invocacin remota modela el paradigma de comunicacin peticin 1 respuesta.

ALMACENAMIENTO Y ESTRUCTURA DEL MENSAJE En la transferencia de informacin en un enlace se deben tener en cuenta la forma en la (ue esta se produce y la capacidad o nmero de mensajes (ue admite el enlace. * su vez, el intercambio de informacin se puede realizar de dos formas! por valor o por referencia. En la transferencia por valor se realiza una copia del mensaje del espacio de direcciones del emisor al espacio de direcciones del receptor, mientras (ue en la transferencia por referencia se pasa un puntero al mensaje. La transferencia por valor tiene la ventaja de (ue mantiene el desacoplo en la informacin (ue maneja el emisor y el receptor, lo (ue proporciona mayor seguridad en la integridad de la informacin. 2iene el inconveniente del gasto de memoria y tiempo (ue implica la copia, (ue adem s se suelen ver incrementados por el uso de una memoria intermedia. Estos inconvenientes son justamente los convenientes de la transmisin por referencia (ue tiene como aspecto negativo el necesitar mecanismos adicionales de seguridad para compartir la informacin entre los procesos. El m&todo de sincronizacin de la invocacin remota utiliza necesariamente la transferencia por valor, mientras (ue los m&todos sncrono y asncrono pueden utilizar ambos modos. Los sistemas operativos tienen asociado a cada enlace una cola en la cual mantienen los mensajes pendientes de ser recibidos. En la comunicacin sncrona la cola se puede considerar (ue tiene una longitud nula ya (ue, como se )a indicado, los dos procesos deben encontrarse para proceder al intercambio del mensaje. En este caso se dice tambi&n (ue la transferencia se realiza sin utilizacin de una memoria intermedia. Sin embargo, en la comunicacin asncrona y en la invocacin remota la implementacin de la cola se realiza normalmente con una capacidad de mensajes finita mayor (ue cero, m. 3uando el proceso emisor enva un mensaje, si la cola no est llena, se copia el mensaje y el proceso contina su ejecucin. Si la cola est llena el proceso se suspende )asta (ue (ueda espacio libre en la cola. Si el mensaje se pasa por referencia la cola guarda los punteros a los mensajes y los valores de esto si el paso es por valor. En algunos casos se considera (ue la capacidad de la cola es ilimitada, de manera (ue un proceso nunca se suspende cuando enva un mensaje. *tendiendo a la estructura de los mensajes estos se pueden considerar divididos en tres tipos! a$ Longitud fija b$ Longitud variable c$ ,e tipo definido El primer tipo resulta en una implementacin fsica (ue permite una asignacin sencilla y eficaz principalmente en las transferencias por valor. 4or el contrario dificulta la tarea de la programacin. Los mensajes de longitud variable son m s adecuados en los sistemas donde la transferencia se realiza por punteros, ya (ue la longitud del mensaje puede formar parte de la propia informacin transmitida. La programacin en este caso resulta m s sencilla a expensas de una mayor dificultad en la implementacin fsica. 4or ltimo, los mensajes con definicin del tipo son adecuados en la comunicacin con buzones. * cada buzn (ue utilice un proceso se le puede asignar el tipo de dato adecuado para dic)o mensaje y slo mensajes con esa estructura pueden ser enviados por ese enlace.

4or ejemplo, en un lenguaje de programacin con declaracin explcita de buzones se podra tener la sentencia buzn*! mailbox5p6 of dato+ para declarar un buzn con el identificador buznA con una capacidad de p elementos del tipo dato. Ejemplo Este ejemplo muestra como se puede utilizar la comunicacin por mensajes para implementar un sem foro binario. Se supone (ue se utiliza un buzn asncrono con una cola ilimitada conocido tanto por el procedimiento de espera como por el de se7al. Module semaforo+ type mensaje 8 record .... + o!"t nulo 8 ....+ p#o edu#e espera"$a# S!integer$+ $a# temp! mensaje+ be%i! recibir"Sbuzon,temp$+ S !8 9+ e!d espera& p#o edu#e se7al"$a# S! integer$+ be%i! enviar"Sbuzon,nulo$+ e!d se7al& p#o edu#e inicializa"$a# S!integer+ valor!boolean$+ be%i! if valor 8 # t'e! enviar"Sbuzon,nulo$+ e!d+

S !8 valor+ e!d inicializa& be%i! crear:buzon"Sbuzon$+ e!d ;semaforo< El buzn creado se identifica de forma exclusiva con el sem foro. El mensaje (ue se transmite es irrelevante ya (ue el paso de mensajes tiene la nica misin de sincronizar tareas, por ello se utiliza un mensaje nulo. El sem foro est libre cuando )ay un mensaje en la cola. En este caso, si un proceso ejecuta una se7al de espera"lo (ue e(uivale a una operacin de recibir$ puede proseguir su ejecucin. 3ual(uier otro proceso (ue ejecute una operacin de espera no podr leer ningn mensaje ya (ue la cola est vaca y, por lo tanto, se suspender )asta (ue es se7alado "enviado un mensaje$ por otro proceso. El comportamiento del primer proceso (ue emita la se7al de espera depender de la inicializacin (ue se )aya )ec)o del sem foro. Si se inicializa con un valor de # se enva un mensaje al buzn y el primer proceso en acceder al sem foro podr leer el mensaje y pondr , por lo tanto, al sem foro en ocupado. Si se inicializa a 9, el buzn esta inicialmente vaco y el sem foro aparece como ocupado, luego un proceso (ue ejecute la operacin de espera se suspende )asta (ue se ejecute una operacin de seal por otro proceso. 4ara (ue el sem foro pueda funcionar es necesario suponer (ue slo )ay un mensaje circulando a la vez y (ue este slo puede ser conseguido por uno de los procesos (ue est n en la espera.