Comunicación

Los procesos ejecutándose concurrentemente en un sistema operativo pueden ser independientes o cooperantes. Un proceso es independiente si no afecta o es afectado por otro proceso en el sistema. Cualquier proceso que no comparte data con otro proceso es independiente. Un proceso es cooperante si puede afectar o ser afectado por otros procesos en el sistema.

  • Compartición de información: se debe proveer un ambiente que permita el acceso concurrente a la información.
  • Speedup: para hacer que una tarea sea mas rápida, se debe separar en subtareas y que se ejecuten paralelamente ( solo se puede si la computadora tiene múltiples cores o múltiples procesadores) .
  • Modularidad
  • Conveniencia: un usuario puede ejecutar diferentes tareas al mismo tiempo.

Sistemas de memoria compartida

El proceso de comunicación usando memoria compartida requiere que los procesos que se están comunicando establezcan una región de memoria compartida. Otros procesos que quieran comunicarse usando un segmento de memoria compartida ya creado debe adjuntarlo a su espacio de direcciones. La forma y locación de la data esta determina por los procesos y no esta bajo el control del sistema operativo.

Sistemas de Pasos de Mensaje

El paso de mensajes provee un mecanismo que permita a procesos comunicar y sincronizar sus acciones sin la necesidad de compartir el mismo espacio de direcciones. Es particularmente útil en ambientes distribuidos. En este esquema se proveen de al menos dos funciones send y receive. Los mensajes enviados por un procesos puede tener un tamaño fijo o variable.

  • Tamaño fijo: la implementación en el sistema es sencillo pero hace la programación mas difícil.
  • Tamaño variable: implementación en el sistema complicada pero las tareas de programación son mas simples.

Para que dos procesos se puedan comunicar un canal de comunicación debe existir entre los procesos.

Comunicación directa

Cada proceso que desea comunicarse debe nombrar al receptor o emisor de la comunicación. El canal de comunicación debe tener las siguientes propiedades.

  • Un canal es establecido automáticamente entre cada par de procesos que se quieren comunicar.
  • Un canal es asociado exactamente a dos procesos.
  • Entre cada para de procesos solo existe un canal.

La comunicación directa es simétrica debido a que tanto el emisor como receptor debe nombrar al otro procesos para comunicarse.

Se puede modificar el esquema para que sea direccionamiento asimétrico, donde solo el emisor menciona al receptor.

Comunicación indirecta

Los mensajes son enviados y recibidos desde un buzón. Cada buzo tiene un identificador único. Un proceso puede comunicarse con otro proceso mediante un numero variante de buzones, pero dos procesos pueden comunicarse solo si tienen buzones compartidos. Los buzones tienen un dueño y un usuario en donde el dueño es el receptor y el usuario es el emisor.

Sincronización

  • Bloquear el envío: el proceso emisor es bloqueado hasta que el mensaje sea recibido por los receptor o por el buzón
  • No bloquear el envío: el emisor envía el mensaje y reanuda su operación.
  • Bloqueando la recepción: el receptor se bloquea hasta que un mensaje esté disponible.
  • No bloquear la recepción: el receptor recupera un mensaje valido o un null

Buffering

Cuando la comunicación es directa o indirecta los mensajes intercambiados en la comunicación entre procesos se encuentran en una cola temporal. Estas colas pueden ser implementadas de tres maneras:

  • Capacidad 0: la cola tiene una capacidad máxima de 0, la conexión o canal no puede tener algún mensaje esperando en ella. En este caso, el emisor debe bloquearse hasta que el receptor reciba el mensaje.
  • Capacidad limitada: tienen una capacidad finita de n mensajes. Si la cola no está full cuando un mensaje es enviado, el mensaje es puesto en la cola ( puede ser una copia o un apuntador al mensaje), y el emisor puede continuar su ejecución sin esperar. Si canal está full el emisor se debe bloquear hasta que haya disponibilidad en la cola.
  • Capacidad ilimitada: la capacidad de la cola es casi infinita. Cualquier cantidad de mensaje puede esperar en la cola y como consecuencia el emisor nunca se bloquea.

results matching ""

    No results matching ""