miércoles, 28 de enero de 2009

Grupo #3


leonardo Barreto c.i 16505104

leomar Rondon c.i 13152437


Erick Aragol c.i 18444246


Joselin Morillo c.i 15711646


Luis Echezuria c.i 17434117


seccion 4

Utilizacion e importancia de las transacciones en la comunicacion distribuida

Considere un banco que tiene tres sucursales, en cada sucursal, un ordenador controla las terminales de la misma y el sistema de cuentas. Cada computador con su sistema de cuentas local en cada sucursal constituye un "sitio" de la BDD; las computadoras están conectadas por la red. Durante las operaciones normales, las aplicaciones en las terminales de la sucursal necesitan sólo acceder la base de datos de la misma. Como sólo acceden a la misma red local, se les llaman aplicaciones locales.

Desde el punto de vista tecnológico, aparentemente lo importante es la existencia de algunas transacciones que acceden a información en más de una sucursal. Estas transacciones son llamadas transacciones globales o transacciones distribuidas.

La existencia de transacciones globales será considerada como una característica que nos ayude a discriminar entre las BDD y un conjunto de base de datos locales.

Una típica transacción global sería una transferencia de fondos de una sucursal a otra. Esta aplicación requiere de actualizar datos en dos diferentes sucursales y asegurarse de la real actualización en ambos sitios o en ninguno. Asegurar el buen funcionamiento de aplicaciones globales es una tarea difícil.
Los clientes manipulan el estado compartido a través de objetos que se ejecutan en servidores entre los que se reparte el trabajo. Uno de los beneficios que provee el modelo objeto-por-cliente es la simplificación del desarrollo mediante la eliminación del acceso concurrente a los objetos; el estado que forma parte del objeto está protegido implícitamente. Sin embargo, no alivia todas las preocupaciones que trae la concurrencia. Para coordinar el acceso al estado que un proceso o servidor mantiene para compartir entre todos los objetos, basta con usar técnicas tradicionales de acceso .NET o Win32 (i.e. critical sections, mutexes, etc.). Pero, ¿qué mecanismo se usar para coordinar el acceso concurrente al estado compartido que reside en la base de datos? La respuesta es: Transacciones.

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.
El crecimiento de los clusters de computadores, y en concreto de sistemas multicluster incrementa los potenciales puntos de fallos, exigiendo la utilización de esquemas de tolerancia a fallos que proporcionen la capacidad de terminar el procesamiento. El objetivo general planteado a sistemas de tolerancia a fallos es que el trabajo total se ejecute correctamente, aún cuando falle algún elemento del sistema, perdiendo el mínimo trabajo realizado posible, teniendo en cuenta que las prestaciones disminuyen debido al overhead necesario introducido para tolerar fallos y a la perdida de una parte del sistema.

Transacciones

Las transacciones son un mecanismo estándar para manejar los cambios al estado del un sistema distribuido. Proveen un modelo para controlar el acceso concurrente a los datos y para manejar las fallas inherentes al cómputo distribuido. Si se permite que el trabajo que los objetos realizan, progrese concurrentemente sin considerar transacciones, lo único que se obtendrá será un caos total.
Una transacción es generalmente definida como una unidad de trabajo que se hace a nombre de una aplicación o componente. Cada transacción puede estar compuesta de múltiples operaciones realizadas en datos que están dispersos en uno o varios procesos o en una o varias máquinas. Cada transacción asegura el trabajo de proteger la integridad del estado de un sistema al proveer cuatro garantías básicas conocidas como las propiedades ACID: atomicidad (atomicity), consistencia (consistency), aislamiento (isolation) y durabilidad (durability)

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
La planificación independiente no es eficiente cuando se ejecutan en distintos procesadores un grupo de procesos:
Relacionados entre sí.
Con una gran interacción entre los 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 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.
Las columnas son las tablas de procesos de los procesadores.
Cada procesador debe utilizar un algoritmo de planificación Round Robin:
Todos los procesadores ejecutan el proceso en el espacio “0” durante un cierto período fijo.
Todos los procesadores ejecutan el proceso en el espacio “1” durante un cierto período fijo, etc.
Se deben mantener sincronizados los intervalos de tiempo.
Todos los miembros de un grupo se deben colocar en el mismo número de espacio de tiempo pero en procesadores distintos.

Modelos de Asignacion

Generalmente se utilizan las siguientes hipótesis:
Todas las máquinas son idénticas (o al menos compatibles en el código); difieren en la velocidad.
Cada procesador se puede comunicar con los demás.
Las estrategias de asignación de procesadores se dividen en:
No migratorias:
Una vez colocado un proceso en una máquina permanece ahí hasta que termina.
Migratorias:
Un proceso se puede trasladar aunque haya iniciado su ejecución.
Permiten un mejor balance de la carga pero son más complejas.
Los algoritmos de asignación intentan optimizar algo:
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.

Asignacion 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, la pregunta es cuándo ejecutar el proceso de manera local y cuándo buscar una estación inactiva. Para el modelo de la pila de procesadores, hay que tomar una decisión por cada nuevo proceso.
En cuarto lugar, cada maquina puede tener un sistema de archivos auto contenido, con la posibilidad de montarlo o tener su sistema de archivos de otras maquinas. La idea aquí es que cada maquina esta auto contenida en lo fundamental y que el contacto con el mundo exterior sea limitado. Este sistema proporciona un tiempo de respuesta uniforme y garantizado para el usuario y pone poca carga en la red.

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.
Ya sea que existan muchos o pocos registros, existe un peligro potencial de que aparezcan condiciones de competencia si dos usuarios llaman al mismo tiempo al comando remoto y ambos descubren que la misma maquina esta inactiva, ambos intentaran iniciar procesos al mismo tiempo. Para detectar y evitar esta situación, el programa remoto verifica la estación de trabajo inactiva, la cual si continua libre se elimina así misma del registro y da la señal de continuar, de esta manera quien hizo la llamada puede enviar su ambiente e iniciar el proceso remoto.

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.
Desde el punto de vista conceptual este método es mas parecido al tiempo compartido tradicional que al modelo de la computadora personal aunque se construye con la tecnología moderna. 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. Si el sistema de archivos se debe concentrar en un pequeño numero de servidores de archivos para mayor economía, debe ser posible hacer lo mismo con los servidores de computo, es decir si colocamos todos los CPU en un gabinete de gran tamaño en el cuarto de maquinas se pueden reducir los costos de suministro de energía y de empaquetamiento, lo cual produce un mayor poder de computo con una cantidad fija de dinero.

Un modelo 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 que cualquiera de los dos modelos puros, combina las ventajas de arribos. El trabajo interactivo se puede llevar a cabo en las estaciones de trabajo, con una respuesta garantizada. Sin embargo, las estaciones inactivas no se utilizan, lo cual hace más sencillo el diseño del sistema. Sólo se dejan sin utilizar. En vez de esto, todos los no 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.