Sistemas distribuidos en la Web.
 




Procesos y Procesadores en Sistemas Distribuidos
 


 

  1. Introducción a los Hilos (Threads)
  2. Uso de Hilos
  3. Aspectos del Diseño de un Paquete de Hilos
  4. Implantación de un Paquete de Hilos
  5. Hilos y RPC
  6. Modelos de Sistemas
  7. El Modelo de Estación de Trabajo
  8. Uso de Estaciones de Trabajo Inactivas
  9. El Modelo de la Pila de Procesadores
  10. Asignación de Procesadores
  11. Modelos de Asignación
  12. Aspectos del Diseño de Algoritmos de Asignación de Procesadores
  13. Aspectos de la Implantación de Algoritmos de Asignación de Procesadores
  14. Ejemplos de Algoritmos de Asignación de Procesadores
    1. Un Algoritmo Determinista Según la Teoría de Gráficas
    2. Un Algoritmo Centralizado
    3. Un Algoritmo Jerárquico
    4. Un Algoritmo Distribuido Heurístico (Eager)
    5. Un Algoritmo de Remates
  15. Planificación en Sistemas Distribuidos
  16. Fin


Introducción a los Hilos (Threads)

Muchos S. O. distribuidos soportan múltiples hilos de control dentro de un proceso que [25, Tanenbaum]:

Ej.: servidor de archivos que debe bloquearse ocasionalmente en espera de acceso al disco: En muchos sentidos los hilos son como miniprocesos: Los distintos hilos de un proceso comparten un espacio de direcciones, el conjunto de archivos abiertos, los procesos hijos, cronómetros, señales, etc.

Los hilos pueden tener distintos estados: en ejecución, bloqueado, listo, terminado.

Inicio:   Fin:

Uso de Hilos

Los hilos permiten la combinación del paralelismo con la ejecución secuencial y el bloqueo de las llamadas al sistema [25, Tanenbaum].

Consideramos el ejemplo del servidor de archivos con sus posibles organizaciones para muchos hilos de ejecución.

Iniciamos con el modelo servidor / trabajador:

Los hilos ganan un desempeño considerable pero cada uno de ellos se programa en forma secuencial.

Otro modelo es el de equipo:

Un tercer modelo es el de entubamiento: Un programa diseñado adecuadamente y que utilice hilos debe funcionar bien:


Inicio:   Fin:

Aspectos del Diseño de un Paquete de Hilos

Un conjunto de primitivas relacionadas con los hilos (ej.: llamadas a biblioteca) disponibles para los usuarios se llama un “paquete de hilos” [25, Tanenbaum].

Respecto del manejo de los hilos se tienen hilos estáticos e hilos dinámicos.

En un diseño estático:

En un diseño dinámico: Los hilos pueden concluir: Los hilos comparten una memoria común:


Inicio:   Fin:

Implantación de un Paquete de Hilos

Un paquete de hilos se puede implantar en el espacio [25, Tanenbaum]:

Implantación del paquete de hilos en el espacio del usuario: Implantación del paquete de hilos en el espacio del núcleo: Un problema fundamental de los paquetes de hilos a nivel usuario es el de las llamadas al sistema con bloqueo: Otro problema de los paquetes de hilos a nivel usuario es que si un hilo comienza su ejecución no puede ejecutarse ningún otro hilo de ese proceso, salvo que el hilo entregue voluntariamente la cpu.

Un problema adicional para los hilos a nivel usuario es que generalmente los programadores desean los hilos en aplicaciones donde los hilos se bloquean a menudo:


Inicio:   Fin:

Hilos y RPC

Es común que los sistemas distribuidos utilicen RPC e hilos [25, Tanenbaum].

Al iniciar un hilo servidor, “S”, éste exporta su interfaz al informarle de ésta al núcleo; la interfaz define los procedimientos que puede llamar, sus parámetros, etc.

Al iniciar un hilo cliente, “C”, éste importa la interfaz del núcleo:

Una de las estructuras es una pila de argumentos compartida por “C” y “S”, que se asocia de manera lectura / escritura en ambos espacios de direcciones.

Para llamar al servidor, “C”:

El núcleo: La llamada se efectúa de tal forma que:


Inicio:   Fin:

Modelos de Sistemas

En un sistema distribuido, con varios procesadores, un aspecto fundamental del diseño es cómo se los utiliza [25, Tanenbaum].

Los procesadores distribuidos se pueden organizar de varias formas:


Inicio:   Fin:

El Modelo de Estación de Trabajo

El sistema consta de estaciones de trabajo (PC) dispersas conectadas entre sí mediante una red de área local (LAN) [25, Tanenbaum].

Pueden contar o no con disco rígido en cada una de ellas.

Los usuarios tienen:

Uso de los discos en las estaciones de trabajo:


Inicio:   Fin:

Uso de Estaciones de Trabajo Inactivas

La idea consiste en ordenar remotamente la ejecución de procesos en estaciones de trabajo inactivas [25, Tanenbaum].

Los aspectos clave son:

Generalmente se considera que una estación de trabajo está “inactiva” cuando se dan ambas condiciones: Los algoritmos para localizar las estaciones de trabajo inactivas se pueden dividir en dos categorías: Algoritmos controlados por el servidor: Algoritmos controlados por el cliente: Para ejecutar el proceso en la estación remota seleccionada se debe lograr: Se necesita la misma visión del sistema de archivos, el mismo directorio de trabajo, etc.

Si se trabaja sobre el servidor de archivos se envían las solicitudes de disco al servidor.

Si se trabaja con discos locales se envían las solicitudes a la máquina de origen para su ejecución.

Ciertas operaciones como la lectura del teclado y la escritura en la pantalla:

Todas las llamadas al sistema que soliciten el estado de la máquina deben realizarse en la máquina donde se ejecuta el proceso.

Las llamadas al sistema relacionadas con el tiempo son un serio problema debido a las dificultades de sincronización.

En caso de que regrese el poseedor de la máquina:


Inicio:   Fin:

El Modelo de la Pila de Procesadores

Se dispone de un conjunto de cpu que se pueden asignar dinámicamente a los usuarios según la demanda [25, Tanenbaum].

Los usuarios no disponen de estaciones de trabajo sino de terminales gráficas de alto rendimiento.

No existe el concepto de propiedad de los procesadores, los que pertenecen a todos y se utilizan compartidamente.

El principal argumento para la centralización del poder de cómputo como una pila de procesadores proviene de la teoría de colas:

El modelo de pila es más eficiente que el modelo de búsqueda de estaciones inactivas.

También existe el modelo híbrido que consta de estaciones de trabajo y una pila de procesadores.

Inicio:   Fin:

Asignación de Procesadores

Son necesarios algoritmos para decidir cuál proceso hay que ejecutar y en qué máquina [25, Tanenbaum].

Para el modelo de estaciones de trabajo:

Para el modelo de la pila de procesadores:


Inicio:   Fin:

Modelos de Asignación

Generalmente se utilizan las siguientes hipótesis [25, Tanenbaum]:

Las estrategias de asignación de procesadores se dividen en: Los algoritmos de asignación intentan optimizar algo:


Inicio:   Fin:

Aspectos del Diseño de Algoritmos de Asignación de Procesadores

Los principales aspectos son los siguientes [25, Tanenbaum]:

Los algoritmos deterministas son adecuados cuando se sabe anticipadamente todo acerca del comportamiento de los procesos, pero esto generalmente no se da, aunque puede haber en ciertos casos aproximaciones estadísticas.

Los algoritmos heurísticos son adecuados cuando la carga es impredecible.

Los diseños centralizados permiten reunir toda la información en un lugar y tomar una mejor decisión; la desventaja es que la máquina central se puede sobrecargar y se pierde robustez ante su posible falla.

Generalmente los algoritmos óptimos consumen más recursos que los subóptimos, además, en la mayoría de los sistemas reales se buscan soluciones subóptimas, heurísticas y distribuidas.

Cuando se va a crear un proceso se debe decidir si se ejecutará en la máquina que lo genera o en otra (política de transferencia):

Cuando una máquina se deshace de un proceso la política de localización debe decidir dónde enviarlo:


Inicio:   Fin:

Aspectos de la Implantación de Algoritmos de Asignación de Procesadores

Casi todos los algoritmos suponen que las máquinas conocen su propia carga y que pueden informar su estado [25, Tanenbaum]:

Otro aspecto importante es el costo excesivo en consumo de recursos para recolectar medidas y desplazar procesos, ya que se debería considerar el tiempo de cpu, el uso de memoria y el ancho de banda de la red utilizada por el algoritmo para asignación de procesadores.

Se debe considerar la complejidad del software en cuestión y sus implicancias para el desempeño, la correctez y la robustez del sistema.

Si el uso de un algoritmo sencillo proporciona casi la misma ganancia que uno más caro y más complejo, generalmente será mejor utilizar el más sencillo.

Se debe otorgar gran importancia a la estabilidad del sistema:


Inicio:   Fin:

Ejemplos de Algoritmos de Asignación de Procesadores

Un Algoritmo Determinista Según la Teoría de Gráficas

Es aplicable a sistemas donde se conoce [25, Tanenbaum]:

Si el número de procesos supera al número de cpu: El sistema se puede representar en una gráfica con pesos: El problema es encontrar la forma de partir la gráfica en subgráficas sujetas a restricciones (ej.: de cpu y de memoria) (ver Figura 10.1 y Figura 10.2 [25, Tanenbaum]):
 


Una forma de asignar 9 procesos a 3 procesadores.

Otra forma de asignar 9 procesos a 3 procesadores.

Inicio:   Fin:

Un Algoritmo Centralizado

Es un algoritmo heurístico que a diferencia del anterior no precisa información anticipadamente [25, Tanenbaum].

Es un algoritmo arriba-abajo (Mutka y Livny) centralizado porque un coordinador mantiene una tabla de usos:

Un puntaje positivo en una entrada de la tabla de usos indica que la estación de trabajo relacionada es un usuario de los recursos del sistema.

Un puntaje negativo significa que precisa recursos.

Una puntuación “0” es neutra.

La heurística utilizada para la asignación de procesadores es la siguiente:


Inicio:   Fin:

Un Algoritmo Jerárquico

El algoritmo anterior no se adapta bien a los sistemas de gran tamaño [25, Tanenbaum], pues el nodo central se convierte en un cuello de botella y en un único punto de fallo.

Una solución son los algoritmos jerárquicos que:

Un método consiste en organizar a los procesadores en jerarquías lógicas independientes de la estructura física: En caso de falla de un equipo con funciones jerárquicas: Para disminuir la vulnerabilidad se puede tener en la cima del árbol jerárquico no uno sino un grupo de equipos; si alguno del grupo falla los restantes eligen a un subordinado para integrar el grupo superior.

Las tareas se pueden crear en cualquier parte de la jerarquía y pueden requerir varios procesos, es decir varios procesadores.

Cada administrador debe mantener un registro de sus equipos dependientes que estén disponibles.

Si el administrador que recibe una solicitud determina que no tiene suficientes procesadores disponibles, transfiere la solicitud hacia arriba a su superior, quien también podría trasladarla hacia arriba nuevamente.

Si el administrador determina que sí puede satisfacer la solicitud:

Un importante problema consiste en que podría haber varias solicitudes en distintas etapas del algoritmo de asignación:


Inicio:   Fin:

Un Algoritmo Distribuido Heurístico (Eager)

Al crearse un proceso [25, Tanenbaum]:


Inicio:   Fin:

Un Algoritmo de Remates

Utiliza un modelo económico con [25, Tanenbaum]:

Los procesos deben comprar tiempo de cpu.

Cada procesador anuncia su precio mediante un archivo que todos pueden leer (es el precio pagado por el último cliente).

Los distintos procesadores pueden tener distintos precios según sus características y servicios.

Cuando un proceso desea iniciar un proceso hijo:

Los procesadores:


Inicio:   Fin:

Planificación en Sistemas Distribuidos

Generalmente cada procesador hace su planificación local (si tiene varios procesos en ejecución) independientemente de lo que hacen los otros procesadores [25, Tanenbaum].

La planificación independiente no es eficiente cuando se ejecutan en distintos procesadores un grupo de procesos:

Se necesita una forma de garantizar que los procesos con comunicación frecuente se ejecuten de manera simultánea.

En muchos casos un grupo de procesos relacionados entre sí iniciarán juntos.

La comunicación dentro de los grupos debe prevalecer sobre la comunicación entre los grupos.

Se debe disponer de un número de procesadores suficiente para soportar al grupo de mayor tamaño.

Cada procesador se multiprograma con “n” espacios para los procesos (multiprogramación de nivel “n”).

El algoritmo de Ousterhout utiliza el concepto de coplanificación:


Inicio:   Fin:
 
 

Para mayor información, seleccione una opción:

Número de visitas efectuadas desde el 17/12/2001: 

Estadísticas diarias desde el 10/07/2002:   Free counter and web stats

Número de visitantes actuales disponible desde el 14/07/2002:

 

AddFreeStats.com Free Web Stats in real-time !  

 


 

Autor: lrmdavid@exa.unne.edu.ar

Ó FACENA - http://exa.unne.edu.ar

Servicios WEB: webmaster@exa.unne.edu.ar