ASIGNACIÓN DE PROCESADORES

Asignación de Procesadores

En un sistema distribuido hay varios procesadores organizados con distintos modelos, por lo que debemos asignar correctamente cada proceso a cada procesador. Para ello utilizaremos una serie de algoritmos, para optimizar una serie de objetivos diferentes en cada sistema. Estos objetivos son minimizar el tiempo de promedio de respuesta, minimizar la tasa de respuesta, y evitar o maximizar el tiempo inactivo de la CPU.






Podemos dividir estos algoritmos en dos categorías, no migratorio y migratorio. En el no migratorio el proceso creado se coloca en una máquina y no se mueve de ahí hasta que termina. En el migratorio el proceso se puede mover entre máquinas.


No hay mucho que decir de la planificación en los sistemas distribuidos. Por lo general, cada procesador hace su planificación local (si tiene varios procesos en ejecución), sin preocuparse por lo que hacen los demás procesadores. Lo normal es que este método funcione. Sin embargo, si un grupo de procesos relacionados entre sí y con gran interacción se ejecutan en distintos procesadores, la planificación independiente no es el camino más eficiente.
La dificultad básica se puede mostrar mediante un ejemplo, en el cual los procesos A y B se ejecutan en un procesador y los procesos C y D en otro. El tiempo de cada procesador se comparte en pedazos de 100 milisegundos, donde A y C se ejecutan en los pedazos pares y B y D en los nones,

Supongamos que A envía muchos mensajes o lleva a cabo muchas llamadas a procedimientos remotos de D. Durante el tiempo 0, A inicia y llama de inmediato a D, que por desgracia no se ejecuta en ese momento, puesto que es el turno de C. Después de 100 milisegundos, se alternan los procesos, D obtiene el mensaje de A, lleva a cabo el trabajo y responde con rapidez. Puesto que B está ejecutándose, pasarán otros 100 milisegundos antes de que A obtenga la respuesta y pueda proseguir. El resultado neto es un intercambio de mensajes cada 200 milisegundos.

Lo que se necesita es una forma de garantizar que los procesos con comunicación frecuente se ejecuten de manera simultánea.
Aunque es difícil determinar en forma dinámica los patrones de común entre los procesos, en muchos casos, un grupo de procesos relacionados entre sí iniciarán juntos.

Por ejemplo, en general está bien suponer que los filtros de un entubamiento en UNIX se comunicarán entre sí más de lo qué lo harán con otros procesos ya iniciados.

Supongamos que los procesos se crean en grupos y que la comunicación dentro de los grupos prevalece sobre la comunicación entre los grupos. Supongamos además que se dispone de un número de procesadores lo bastante grande como para manejar al grupo de mayor tamaño y que cada procesador se multiprograma con N espacios para los procesos multiprogramación de nivel N).


































No hay comentarios:

Publicar un comentario