domingo, 20 de junio de 2010

Soporte para Programacion Distribuida

El soporte para programación distribuida está compuesto por los soportes de ejecución de los lenguajes para aplicaciones distribuidas, junto con los servicios de comunicación de difusión (multicast) y con las RPC’s o interfaces de los servicios ofrecidos por máquinas remotas.

Para hablar sobre esto, debemos estar concientes que un proceso es una actividad que resulta al ejecutarse un algoritmo, utilizando recursos de la pc, como la memoria ram, dispositivos E/S, etc.

En un sistema operativo centralizado (en este caso, podemos decir que posee solo un procesador), la gestión de procesos, se encarga de repartir un procesador entre diversos procesos de usuario, utilizando un tiempo muy pequeño para cada uno de los procesos, tan pequeño, que no nos damos cuenta de que varios procesos están ejecutándose al mismo tiempo en un solo procesador.

El objetivo de la gestión de procesos en los sistemas operativos distribuidos es compartir todos los recursos de proceso (distribuidos por toda la red) entre todos los procesos de toda la red del sistema distribuido.

Para conseguir esto, es necesario proporcionar mecanismos y políticas para realizar operaciones con los procesos tanto locales como remotos, para gestionarlos, comunicarlos y sincronizarlos.

Estos mecanismos van a tener que ampliar los ya existentes en los sistemas distribuidos centralizados, para poder tratar con la distribución de recursos y la distribución de la información del estado de los recursos por toda la red.

Entonces, cuando ejecutamos un proceso en un sistema operativo distribuido, en que procesador vamos a ejecutar el proceso? (sabemos que tenemos varios procesadores, a travéz de la red). La política se llama Reparto de Carga de Trabajo.

El reparto de Carga de Trabajo, se puede realizar en 2 momentos:
  1. Cuando se van a crear los Procesos
  2. Reasignando los procesadores a los procesos, durante su ejecución mediante la migración de procesos
Existen varias prestaciones que se obtienen en un sistema operativo distribuido, sin embargo, la mejora de cada una de ellas, depende del objetivo del sistema operativo

El
rendimiento se define como la cantidad de trabajo realizada por unidad de tiempo. El rendimiento se maximiza, minimizando la sobrecarga, el tiempo de comunicación y el tiempo de espera. Sobrecarga es el tiempo que se dedica el SO a la planificación y a los cambios de contexto. El tiempo de comunicación, es el tiempo que pasan los procesos esperando recibir datos o eventos de E/S, para continuar su ejecución. El tiempo de espera, es el tiempo que pasan los procesos en la cola de "Listos", para que haya un procesador disponible.

El
tiempo de respuesta es el tiempo que pasa desde la entrada de datos, hasta la salida de resultados.

Si se mejora el rendimiento o los tiempos de respuesta, es posible que en algún momento algún proceso nunca llegue a ejecutarse. Para esto es necesario que haya "justicia" en decidir que procesos pueden utilizar un procesador.

Los buenos planificadores de los sistemas distribuidos, además de intentar conseguir un equilibrio entre estos tres factores deben tener muy en cuenta que la asignación del procesador influye mucho en el tiempo de comunicación, pues cuando dos procesos con mucha comunicación se asignan a equipos muy separados, los procesadores pueden quedarse ociosos esperando a que los mensajes viajen por la red, y además cuando un proceso que produce datos para otros consumidores no se ejecuta, los procesos consumidores quedan bloqueados en espera, lo cual afecta negativamente a los tiempos de comunicación.

Mas adelante, voy a mencionar como es que arranca la ejecución de un proceso en un nodo remoto, y de como es que un proceso que se esta ejecutando en un nodo, puede trasladarse a otro para continuar ahí su ejecución.

Saludos =D

No hay comentarios:

Publicar un comentario