miércoles, 22 de octubre de 2014

Buzones (Mailboxes)


Los Buzones o Mailboxes 

     Se trata de un espacio físico, perteneciente a una unidad de disco, en la que se almacenan los mensajes del usuario. Dichos mensajes albergan todo tipo de información como documentos comprimidos, música, fotos y videos. Entre ellos tenemos muy utilizados hoy en día:

Buzones (Mailboxes)

Un mailbox es una forma de intercomunicación indirecta, los mensajes son enviados y recibidos desde el mismo. Un mailbox puede ser visto en forma abstracta como un objeto en el cual los mensajes son colocados por los procesos y desde el cual los mensajes son leídos. Cada mailbox tiene una identificación única. Dos procesos pueden comunicarse solamente si acceden ambos a un mailbox compartido. Conceptualmente las primitivas fundamentales son Send (mailbox, mensaje) y Receive (mailbox, mensaje).
En el contexto del sistema operativo Open/VMS, un mailbox es un dispositivo virtual usado para la comunicación entre procesos. Usando las llamadas a sistema para abrir, leer, escribir y cerrar archivos de entrada/salida, podemos acceder al mismo. El primer paso para utilizar un mailbox es crearlo, el sistema provee servicios para hacerlo.
Los mailbox pueden ser temporarios o permanentes. Por defecto son temporarios y eliminados cuando no existe un canal de entrada/salida asociado a él, si el mailbox es permanente se debe eliminar con una llamada a sistema. Para escribir y leer datos de un mailbox, tenemos varias opciones:
  • En forma sincrónica: se lee o escribe al mailbox y se espera hasta que el proceso que coopera ejecute la operación opuesta. Se utilizan sentencias convencionales de entrada/salida en el lenguaje de programación.
  • En forma inmediata: el proceso lee o escribe el mensaje en la cola del mailbox y continúa su ejecución normal después que la operación se completa. Es decir si al intentar leer un mensaje desde la cola no existe ninguno, queda en estado de espera, hasta que lea uno.
  • Asincrónico: se deja la solicitud de lectura o escritura en la cola y sé continua la ejecución del programa mientras el pedido se ejecuta. Cuando la lectura o escritura completa, el bloque donde van los datos es llenado en caso de lectura, un flag cambia de estado, y ejecuta una rutina asincrónica, en caso de haberse especificado.
Para la comunicación entre los servidores y el monitor transaccional, se utilizan los mailbox de tipo inmediato.
Cada servidor crea un mailbox, y publica un nombre lógico accesible desde cualquier proceso que pertenezca al grupo de la aplicación transaccional. Cuando un mensaje requiere el procesamiento de la transacción, en un campo de la transacción esta incluido el nombre del servidor que lo debe atender. El monitor transaccional extrae el nombre, ubica el nombre lógico del mailbox del servidor correspondiente y deja en la cola el mensaje con la transacción a procesar, el monitor transaccional luego de dejar el mensaje continúa su ejecución normal.
Los mailbox de acceso inmediato, se utilizan para enviar un mensaje a otro proceso sin esperar por una respuesta del mismo.
Es posible que un mailbox inmediato contenga mas de uno o ningún mensaje cuando un proceso lee. Si el mailbox contiene mas que un mensaje, la operación de lectura recupera los mensajes uno a la vez en el orden que ellos fueron escritos. Si el mailbox no contiene mensajes, la lectura genera un error de fin de archivo. Es responsabilidad de los procesos coordinar la entrada y salida de mensajes del mailbox. Un proceso podría leer un mensaje dejado en el mailbox por él mismo. Normalmente dos mailboxes se utilizan para la intercomunicación entre procesos, uno para enviar datos desde el monitor transacional al servidor y otro para enviar datos desde el servidor al monitor transaccional. En el modelo de implementación, cada servidor tiene su propio mailbox para recibir mensajes del monitor transaccional, y el monitor transaccional tiene un mailbox para recibir mensajes desde todos los servidores transaccionales.

No hay comentarios:

Publicar un comentario