jueves, 21 de junio de 2012

UNIDAD III PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS


3.1 PROCESOS Y PROECESADORES CONCEPTOS BASICOS

Un procesos.
Son todos o todas las actividades o programas compilados que se encuentran guardados en una memoria.


Un procesador. 
Es el dispositivo de hardware que se encarga de ejecutar los procesos. 






3.2 HILOS Y MULTIHILOS

Los hilos son mini procesos. Cada hilo se ejecuta en forma estrictamente secuencial y tiene su propio contador de programa una pila para llevar un registro de su posición.
Los hilos comparten CPU de la misma forma que lo hacen los procesos secuencialmente y tiempo compartido.
Solo en un multiprocesador se pueden ejecutar realmente en paralelo. Los hilos pueden crear hilos hijos, mientras un hilo esta bloqueado se puede ejecutar otra fila del mismo proceso en los distintos hilos de un proceso comparten un espacio de direcciones, y los hilos pueden tener distintos estados (en ejecución, bloqueado, listo y terminación).
Muchos sistemas operativos distribuidos soportan múltiples hilos de control dentro de un proceso que comparten un único espacio de direcciones que ejecutan casi paralelamente como si fueran procesos independientes.

3.3.- MODELOS DE PROCESADORES

En un sistema distribuido con varios procesadores un aspecto fundamental en el diseño es como se utiliza a los procesadores que se pueden organizar de varias formas:

  • ·         De estación de trabajo
  • ·         De pila de procesadores
  • ·         Híbrido

            3.3.1 DE ESTACIÓN DE TRABAJO

Este sistema consta de computadoras dispersas conectadas entre si mediante una red de área local puede contar o no con disco duro en cada una de ellas, los usuarios tienen una cantidad fija de poder de computo y un alto grado de autonomía para asignar sus recursos locales.
La idea consiste en ordenar realmente la ejecución de procesos en estaciones de trabajo inactivas.

Los usuarios tienen:
•      Una cantidad fija de poder de cómputo exclusiva.
•      Un alto grado de autonomía para asignar los recursos de su estación de trabajo.
Uso de los discos en las estaciones de trabajo:
•      Sin disco:
–     Bajo costo, fácil mantenimiento del hardware y del software, simetría y flexibilidad.
–     Gran uso de la red, los servidores de archivos se pueden convertir en cuellos de botella.
•      Disco para paginación y archivos de tipo borrador:
–     Reduce la carga de la red respecto del caso anterior.
–     Alto costo debido al gran número de discos necesarios.
•      Disco para paginación, archivos de tipo borrador y archivos binarios (ejecutables):
–     Reduce aún más la carga sobre la red.
–     Alto costo y complejidad adicional para actualizar los binarios.
•      Disco para paginación, borrador, binarios y ocultamiento de archivos.  
–     Reduce aún más la carga de red y de los servidores de archivos.
–     Alto costo.
–     Problemas de consistencia del caché.
•      Sistema local de archivos completo:
–     Escasa carga en la red.
–     Elimina la necesidad de los servidores de archivos.
–     Pérdida de transparencia. 
3.3.2.- MODELO DE PILA DE PROCESADORES

Este método consiste en construir una pila de procesadores, repleta de CPU, en un cuarto de maquinas, los cuales se pueden asignar de manera dinámica a los usuarios según la demanda.
A cada usuario se le da una terminal gráfica de alta rendimiento, como las terminales X, incluso se pueden utilizar terminales ASCII.

Ventajas
·         Precio
·         Elimina la asociación entre el número de usuarios y el de estaciones de trabajo.
·         Facilita el crecimiento por incrementos

De hecho se convierte el poder de cómputo en “estaciones de trabajo inactivas”, a las que se puede tener acceso de manera dinámica. Aquí no existe el concepto de propiedad.
La motivación para la idea de la pila de procesadores proviene de dar un paso mas adelante en la idea de las estaciones de trabajo sin disco.
El principal argumento para la centralización del poder de cómputo como pila de procesadores proviene de la teoría de colas.

     Aun así, el modelo de pila de procesadores es una forma más limpia de obtener poder de cómputo adicional que la búsqueda de estaciones inactivas. Ningún procesador pertenece a alguien, no hay máquina origen, no hay peligro de que el poseedor regrese.
Seleccionar pila de procesadores o estaciones de trabajo inactivas va a depender del trabajo que se desarrolle.

 3.3.3.- MODELO DE PROCESADOR HÍBRIDO

Se puede establecer una mediación al proporcionar a cada usuario una “estación de trabajo” personal y además tener una pila de procesadores. Aunque esta solución es  más cara.
  Para procesos interactivos sería mejor utilizar estaciones de trabajo, con una respuesta garantizada.  Sin embargo las estaciones inactivas no se utilizan, lo cual hace más sencillo al diseño del sistema. Solo se dejan sin utilizar. En vez de esto todos los interactivos se ejecutan  en la pila de procesadores, así como todo el cómputo pesado en general. Este modelo proporciona una respuesta interactiva más rápida, un uso eficiente de los recursos y un diseño sencillo. 





3.4 ASIGNACIÓN DE PROCESADORES

Por definición, un sistema distribuido consta de varios procesadores. Estos se pueden organizar como colección de estaciones de trabajo personales, una pila pública de procesadores o alguna forma híbrida. En todos los casos, se necesita cierto algoritmo para decidir cuál proceso hay que ejecutar y en qué máquina. Para el modelo de estaciones de trabajo, hay que decidir cuándo ejecutar el proceso de manera local y cuándo buscar una estación inactiva. Para el modelo de la pila reprocesadores, hay que tomar una decisión por cada nuevo proceso.

Uso de estaciones de trabajo inactivas
Plantea el problema de encontrar estaciones de trabajo inactivas en la red que puedan ejecutar procesos. Por lo cual las estaciones de trabajo deben de anunciar cuando no cuentan con una carga de trabajo asignada, así todas las demás estaciones toman nota de esto y lo registran.



Modelos de asignación
Generalmente se utilizan las siguientes hipótesis:
Todas las máquinas son idénticas o al menos compatibles en el código, difieren a lo sumo en la velocidad.
Cada procesador se puede comunicar con los demás. Las estrategias de asignación de procesadores se pueden dividir en 2 categorías amplias:

No migratorias:
Al crearse un proceso, se toma una decisión de donde colocarlo. Una vez colocado en la máquina, el proceso permanece ahí hasta que termina. No se puede mover, no importa lo sobrecargada que esté la máquina.

Migratorias:
Un proceso se puede trasladar aunque haya iniciado su ejecución. Permiten un mejor balance de la carga pero son más complejas y tienen un efecto fundamental en el diseño del sistema.
Los algoritmos de asignación intentan optimizar:

Uso de las CPU:
Maximizar el número de ciclos de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad de las CPU.


Tiempo promedio de respuesta
Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.


Tasa de respuesta:
Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.

3.4.1 ALGORITMOS  CON SUS ASPECTOS DE DISEÑO  E IMPLEMENTACIÓN Y ASIGNACIÓN.


Los algoritmos de asignación intentan optimizar:
Uso de las CPU:
Maximizar el número de ciclos de CPU que se ejecutan para trabajos de los usuarios. Minimizar el tiempo de inactividad de las CPU.
Tiempo promedio de respuesta
Minimizar no los tiempos individuales de respuesta sino los tiempos promedio de respuesta.
Tasa de respuesta:
Minimizar la tasa de respuesta, que es el tiempo necesario para ejecutar un proceso en cierta máquina dividido por el tiempo que tardaría en cierto procesador de referencia.
Las principales decisiones que deben tomar los diseñadores se pueden resumir en 5 aspectos:

  1. Algoritmos deterministas vs. Heurísticos
  2. Algoritmos centralizados vs. Distribuidos
  3. Algoritmos óptimos vs. Subóptimos
  4. Algoritmos locales vs. Globales
  5. Algoritmos iniciados por el emisor vs. Iniciados por el receptor
1) Algoritmos deterministas
Son adecuados cuando se sabe de antemano todo acerca del comportamiento de los procesos. En pocos, si no es que en ninguno de los sistemas, se tiene un conocimiento total de antemano, pero a veces se puede obtener una aproximación razonable. Se pueden definir en términos de una máquina de estado; un «estado» describe qué está haciendo la máquina en un instante particular de tiempo. Justo cuando se produce la entrada, la máquina comienza en su «estado inicial» y, posteriormente, si la máquina es determinista, comenzará la ejecución de la secuencia de estados predeterminados. Una máquina puede ser determinista y no tener límite temporal para la ejecución o quedarse en un bucle de estados cíclicos eternamente. Ejemplos de máquinas abstractas deterministas son las máquinas de Turing deterministas y los autómatas finitos deterministas.


Algoritmos heurísticos
Son adecuados cuando la carga es impredecible. Un algoritmo heurístico (o simplemente heurística) puede producir una buena solución (puede que la óptima) pero también puede que no produzca ninguna solución o dar una solución no muy buena. Normalmente, se basa en un conocimiento intuitivo del programador sobre un determinado problema.


2) Diseño centralizado vs. Distribuido


La recolección de toda la información en un lugar permite tomar una mejor decisión, pero menos robusta y coloca una carga pesada en la máquina central. Son preferibles los algoritmos descentralizados, pero se han propuesto algunos algoritmos centralizados por la carencia de alternativas descentralizadas adecuadas. Una desventaja de los centralizados es que la máquina central se puede sobrecargar y se pierde robustez ante su posible falla.


   Cuando el poseedor de una estación de trabajo ejecuta procesos en las máquinas de otras personas, acumula puntos de penalización, un número fijo por cada segundo, como se muestra en la siguiente figura:


3)    Algoritmos óptimos vs. Sub óptimos:
Se pueden obtener las soluciones óptimas tanto en los sistemas centralizados como en los descentralizados, pero por regla son más caros que los sub óptimos. Hay que recolectar más información y procesarla un poco más. En la práctica la mayoría de los sistemas distribuidos reales buscan soluciones subóptimas, heurísticas y distribuidas, debido a la dificultad para obtener las óptimas.

Aspectos de la Implantación


Casi todos los algoritmos suponen que las máquinas conocen su propia carga y que pueden informar su estado:
·La medición de la carga no es tan sencilla
Un método consiste en contar el número de procesos (hay que considerarlos procesos latentes no activos).
Otro método consiste en contar solo los procesos en ejecución o listos.  
También se puede medir la fracción de tiempo que la cpu está ocupada.
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.
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:
·         Las máquinas ejecutan sus algoritmos en forma asíncrona por lo que el sistema nunca se equilibra.
·         La mayoría de los algoritmos que intercambian información:
o   Son correctos luego de intercambiar la información y de que todo se ha registrado.
o   Son poco confiables mientras las tablas continúan su actualización, es decir que se presentan situaciones de no equilibrio.


3.5 COPLANIFICACION

Cada procesador se multiprograma con “n” espacios para los procesos (multiprogramación de nivel “n”). El algoritmo de Ouster hout utiliza el concepto de coplanificación:
· Toma en cuenta los patrones de comunicación entre los procesos durante la planificación.
·    Debe garantizar que todos los miembros del grupo se ejecuten al mismo tiempo.
·    Se emplea una matriz conceptual donde: = Las filas son espacios de tiempo.=  Y las columnas son las tablas de procesos de los procesadores.
·  Cada procesador debe utilizar un algoritmo de planificación Round Robin. Donde:  
1-      Todos los procesadores ejecutan el proceso en el espacio “0” durante un cierto período fijo.
2-      Todos los procesadores ejecutan el proceso en el espacio “1” durante un cierto período fijo, etc.
3-      Se deben mantener sincronizados los intervalos de tiempo.
4-      Todos los miembros de un grupo se deben colocar en el mismo número de espacio de tiempo pero en procesadores distintos.

 3.6 TOLERANCIA A FALLOS

La tolerancia a fallos es un aspecto crítico para aplicaciones a gran escala, ya que aquellas simulaciones que pueden tardar del orden de varios días o semanas para ofrecer resultados deben tener la posibilidad de manejar cierto tipo de fallos del sistema o de alguna tarea de la aplicación.
Sin la capacidad de detectar fallos y recuperarse de estos, dichas simulaciones pueden no llegar a completarse. Es más, algunos tipos de aplicaciones requieren ser ejecutadas en un entorno tolerante a fallos debido al nivel de seguridad requeridos.
De cualquier forma, en ciertos casos debería haber algún modo de detectar y responder automáticamente a ciertos fallos del sistema o al menos ofrecer cierta información al usuario en el caso de producirse un fallo.
En PVM hay un mecanismo de notificación de fallos, de forma que una tarea puede manejar notificaciones sobre ciertas tareas de las que espera recibir un mensaje. Por ejemplo, si una tarea muere, otra que estuviese esperando un mensaje de la primera recibirá una notificación en lugar del mensaje que esperaba. De esta forma, la notificación le da la oportunidad de responder al fallo sin tener que fallar forzosamente.


3.7 SISTEMAS DE TIEMPO REAL

Los sistemas de tiempo real son aquellos que interactuan con el mundo exterior donde el tiempo es un factor importante.

CARACTERÍSTICAS.
Se activan por evento o por tiempo.
Su comportamiento debe ser predecible.
Deben ser tolerantes a fallas.
La comunicación en los sistemas distribuidos de tiempo real debe de alto desempeño.
 CLASIFICACIÓN.
Los sistemas de tiempo real se clasifican en general en dos tipos dependiendo de lo serio de sus tiempos límite y de las consecuencias de omitir uno de ellos. Estos son:
·         Sistema de tiempo real suave.
·         Sistema de tiempo real duro.
 El tiempo real suave significa que no existe problema si se rebasa un tiempo límite. Un sistema de tiempo real duro es aquel en el que un tiempo límite no cumplido puede resultar catastrófico.
Ejemplo de sistema de tiempo real suave.
Conmutador telefónico.
Ejemplo de sistema de tiempo real duro.
Alarma sísmica.


ACTIVACIÓN DE SISTEMAS DE TIEMPO REAL.
Los sistemas de tiempo real pueden ser activados por evento o por tiempo. Se dice que un sistema es activado por evento cuando, al ocurrir un evento externo, este es detectado por algún sensor, lo que entonces provoca que el CPU conectado tenga una interrupción. Los sistemas activados por eventos están controlados entonces por las interrupciones. Por otro lado, en los sistemas de tiempo real activados por el tiempo, se verifican los sensores cada cierto tiempo, para verificar si está ocurriendo algún evento externo. La desventaja es que se pierde mucho tiempo de CPU si los eventos ocurren con poca frecuencia.

No hay comentarios:

Publicar un comentario