martes, 9 de julio de 2013

SINCRONIZACIÓN EN SISTEMAS DISTRIBUIDOS

Menú Principal


Sincronización de relojes

                     Un sistema distribuido debe permitir el apropiado uso de los recursos, debe encargarse de un buen desempeño y de la consistencia de los datos, además de mantener seguras todas estas operaciones .Consiste en garantizar que los procesos se ejecuten en forma cronológica y a la misma vez respetar el orden de los eventos dentro del sistema. La sincronización de procesos en los sistemas distribuidos resulta más compleja que en los centralizados, debido a que la información y el procesamiento se mantienen en diferentes nodos. Un sistema distribuido debe mantener vistas parciales y consistentes de todos los procesos cooperativos y de cómputo. Tales vistas pueden ser provistas por los mecanismos de sincronización. El término sincronización se define como la forma de forzar un orden parcial o total en cualquier conjunto de eventos, y es usado para hacer referencia a tres problemas distintos pero relacionados entre sí:

1. La sincronización entre el emisor y el receptor.
2. La especificación y control de la actividad común entre procesos cooperativos.
3. La serialización de accesos concurrentes a objetos compartidos por múltiples procesos.




Relojes lógicos

 Los relojes lógicos son aquellos por los cuales están ordenados los sucesos de una forma única. Para poder usar en general el tiempo físico se debe sincronizar perfectamente bien los relojes a lo largo de un sistema distribuido para poder así obtener el orden de cualquier par arbitrario de sucesos que ocurran en él, pero es poco probable que esto ocurra por que no se puede sincronizar perfectamente los relojes a lo largo de un sistema distribuido. Se puede utilizar un esquema que similar a la casualidad física, que se aplica en los sistemas distribuidos, para controlar el orden de algunos sucesos que ocurren en diversos procesos. La cual está basada en dos puntos sencillos y obvios. Cuando se envía un mensaje entre procesos, el suceso de enviar el mensaje ocurrió antes del de recepción del mismo. Lamport llamo a la ordenación obtenida al generalizar estas dos relaciones la realización suceder antes.

•El interés en las aplicaciones distribuidas, no necesariamente es el tiempo exacto, sino la secuencia en que ocurren los eventos. Así, se pueden manejar relojes lógicos, en lugar de relojes físicos.
•Reloj lógico: contador de software que se incrementa monótonamente, cuyo valor no necesita estar relacionado con ningún reloj físico.
•Generalmente se asocia a cada proceso un reloj lógico.





RELOJES FÍSICOS

 Los relojes físicos son relojes que: Deben ser iguales (estar sincronizados).
No deben desviarse del tiempo real más allá de cierta magnitud. En ciertos sistemas es importante la hora real del reloj:

Se precisan relojes físicos externos (más de uno).

Se deben sincronizar: Con los relojes del mundo real.





Algoritmos para la sincronización de relojes

Algoritmo de Cristhian: Es el más sencillo consiste en utilizar un servidor de reloj y medir los tiempos de latencia, dichos tiempos se consideran en el tiempo formal, este algoritmo se basa en que el ordenador cliente envía un mensaje al servidor de tiempo preguntándole la hora actual y cuando el cliente recibe el mensaje de respuesta debe actualizar su reloj

Algoritmo de Berkeley: Este algoritmo sugiere que se coordinen todos los relojes de los nodos en un tiempo t en específico. En este algoritmo se elige un coordinador para que actué como maestro y este se va a encargar de preguntar a todas las estaciones o esclavos su hora y una vez obtenida la respuesta calcula un tiempo promedio y actualiza las horas de los esclavos.






USO DE RELOJES SINCRONIZADOS: Hasta hace poco, se dispone del hardware y software necesarios para la sincronización de relojes a gran escala (es decir, en todo Internet).


EXCLUSIÓN MUTUA

• Los sistemas con varios procesos se programan más fácilmente mediante las regiones críticas.

• Cuando un proceso debe leer o actualizar ciertas estructuras de datos compartidas, primero entra a una región crítica para lograr la exclusión mutua y garantizar que ningún otro proceso utilice las estructuras de datos al mismo tiempo.

• En los sistemas con un solo procesador, las regiones críticas se protegen mediante semáforos, monitores y construcciones similares.


Para mas:
http://geneura.ugr.es/~gustavo/aco/teoria/exclusion/exclusion.pdf


ALGORITMOS DE ELECCIÓN.

 Muchos de los algoritmos distribuidos necesitan que uno de los procesos que interviene en ellos, actúe como el coordinador, iniciador, secuenciador o que desempeñe en cierta forma un papel especial. El objetivo de los algoritmos de elección es garantizar que al iniciar una elección, ésta concluya con el acuerdo de todos los procesos con respecto a la identidad del nuevo coordinador.


• Por ejemplo en el coordinador del algoritmo centralizado.

• No importa cuál de todos los procesos que intervienen sea el que sea el que asuma esta responsabilidad, uno de ellos debe de hacerlo. 



Algoritmos basados en paso de mensajes:

En estos algoritmos, se comparte un token único entre todos los nodos. Se permite que un nodo entre a la SC si posee al token. Este tipo de algoritmos utilizan números de secuencia en lugar de marcas de tiempo. Cada petición del token contiene un número de secuencia y el número de secuencia del resto de los nodos. Un nodo incrementa el contador de número de secuencia cada vez que realiza una petición para poseer al token. Una de las funciones principales de los número de secuencia, es distinguir entre peticiones viejas y nuevas. En segundo lugar, la forma en que se asegura la exclusión mutua debido a que mientras un nodo posea al token, ningún otro nodo podrá entrar a la SC.


Algoritmos no basados en paso de mensajes


Estos algoritmos requieren dos o más rondas sucesivas de mensajes entre los nodos. Se basan en una aseveración porque un nodo puede entrar a su sección crítica de procesamiento (SC) cuando una aseveración en sus variables se vuelve verdadera. Se forza la exclusión mutua porque la aseveración es verdadera en un solo nodo en un determinado momento.


Bloqueos en Sistemas Distribuidos

     Son peores que los bloqueos en sistemas monoprocesador: Son más difíciles de evitar, prevenir, detectar y solucionar. Toda la información relevante está dispersa en muchas máquinas. Son especialmente críticos en sistemas de bases de datos distribuidos. Las estrategias usuales para el manejo de los bloqueos son:
Algoritmo del avestruz:

·         Ignorar el problema.
·         Detección: Permitir que ocurran los bloqueos, detectarlos e intentar recuperarse de ellos.
·         Prevención: Hacer que los bloqueos sean imposibles desde el punto de vista estructural.
·         Evitarlos: Evitar los bloqueos mediante la asignación cuidadosa de los recursos.

     El algoritmo del avestruz merece las mismas consideraciones que en el caso de mono-procesador. En los sistemas distribuidos resulta muy difícil implantar algoritmos para evitar los bloqueos:

·         Se requiere saber de antemano la proporción de cada recurso que necesitará cada proceso.
·         Es muy difícil disponer de esta información en forma práctica.

     Las técnicas más aplicables para el análisis de los bloqueos en sistemas distribuidos son:

  •         Detección.
  •          Prevención
Videos



Sincronización Ubuntu Linux con reloj atómico mediante NTP

 


PROCESOS Y PROCESADORES EN SISTEMAS DISTRIBUIDOS

PROCESOS Y PROCESADORES


Hilos


              En los sistemas operativos tradicionales cada proceso tiene un espacio de direcciones y un hilo de control. Un hilo es una secuencia de código en ejecución dentro del contexto de un proceso no pueden ejecutarse ellos solos, requieren la supervisión de un proceso padre para correr. Dentro de cada proceso hay varios hilos ejecutándose.

Los Multihilo

            Proporcionan un mecanismo para agrupar varios hilos en un único objeto con el fin de poder manipularlos todos de una vez es una característica que permite a una aplicación realizar varias tareas a la vez. Los distintos hilos de ejecución comparten una serie de recursos tales como el espacio de memoria, los archivos abiertos, situación de autenticación.

 

 Diferencias entre hilos y procesos

             Se diferencia ya que el proceso solamente puede crear hilos para sí mismo, mientras que los hilos comparten memoria reservada directamente.

Modelos de sistemas 

           Definición de modelo, es la representación mental o formal de un sistema, cuyo objetivo es anticipar conductas futuras, beneficiado de la información almacenada del pasado, para pronosticar comportamientos del futuro que estamos modelando.

          
El Modelo de Estación de Trabajo.

Sistema consta de estaciones de trabajo (PC) dispersas conectadas entre sí mediante una red de área local (LAN) ].

Pueden contar o no con disco rígido en cada una de ellas 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.

Uso de Estaciones de Trabajo Inactivas


La idea consiste en ordenar remotamente la ejecución de procesos en estaciones de trabajo inactivas.

Generalmente se considera que una estación de trabajo está “inactiva” cuando se dan ambas condiciones:

  • Nadie toca el ratón o el teclado durante varios minutos.
  • No se ejecuta algún proceso iniciado por el usuario.


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. 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 cola.

                                       

Un Modelo Híbrido.


 Consta de estaciones de trabajo y una pila de procesadores. El sistema operativo permite más de un hilo por proceso. El soporte de lenguaje de programación utiliza un hilo del núcleo para implementar un grupo de hilos de usuario. Proporciona flexibilidad y un máximo rendimiento potencial al programador de la aplicación.
          
  A través de sistemas híbridos, se puede lograr la flexibilidad para combinar los instrumentos independientemente del bus, permitiendo elegir los instrumentos más adecuados para sus necesidades de aplicación




Vídeos

Para mas sobre los procesos y procesadores visite el siguiente video:

ASIGNACION DE PROCESADORES

Asignación.

Modelos de Asignación.

     Problema de asignación debe su nombre a la aplicación particular de asignar hombres a trabajos (o trabajos a máquinas), con la condición de que cada hombre puede ser asignado a un trabajo y que cada trabajo tendrá asignada una persona.


                              

    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.


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.

Para mas viste el siguiente link:

 

Tolerancia a fallas.

    Se determina a la capacidad de un sistema de almacenamiento de acceder a información aún en caso de producirse algún fallo. Esta falla puede deberse a daños físicos (mal funcionamiento) en uno o más componentes de hardware lo que produce la pérdida de información almacenada. La tolerancia a fallos requiere para su implementación que el sistema de almacenamiento guarde la misma información en más de un componente de hardware o en una máquina o dispositivo externos a modo de respaldo.

 


Transacciones


     Cuando hablamos de transacción estamos hablando de una operación de diverso tipo que se realiza entre dos o más partes y que supone el intercambio de bienes o servicios a cambio correspondiente. Si bien el término se puede aplicar a muchas situaciones y ámbitos de la vida cotidiana, normalmente se lo utiliza para señalar operaciones de tipo económico que implican el uso de capital o dinero para pagar el costo del bien o servicio adquirido.




Vídeo Del Grupo Nº 6 




Menu principal

SISTEMAS DE ARCHIVOS DISTRIBUIDOS

Sistemas de Archivos Distribuidos.




Diseño de los Sistemas de Archivos Distribuidos.


Un sistema de archivos distribuido consta de dos partes:

     El servicio de archivos, el cual se encarga de las operaciones en los archivos individuales, como pueden ser la escritura, la lectura o la adición.

     El servicio de directorios, cuya función es la de crear y administrar directorios, añadir y eliminar archivos de los directorios, etc. , es decir, mantener los directorios actualizados. Los directorios pueden dividirse a su vez en subdirectorios en lo que se conoce como sistema jerárquico de archivos. 


 Mas información

Implementación de un Sistema de Archivos Distribuidos.


La interfaz del servicio de archivos

      Un aspecto importante del modelo de archivo es si éstos se pueden modificar después de su creación. Existen algunos sistemas distribuidos que permiten únicamente las operaciones de archivos CREATE Y READ. Una vez creado un archivo no se puede modificar. Se dice que tal archivo es inmutable. Estos archivos facilitan el ocultamiento y duplicación de archivos, puesto que esto elimina todos los problemas asociados con la actualización de todas las copias de un archivo cada vez que éste se modifique.


Implantación de un sistema de archivos distribuidos

Uso de Archivos

  •     Mediciones Estáticas: En este tipo de mediciones se observa el sistema en un determinado momento, esto quiere decir que se verifica su estado en un instante de tiempo. Entre algunas de estas mediciones estáticas podemos encontrar: la distribución de tamaños de los archivos, la distribución de tipos de archivos y la cantidad de espacio que ocupan los archivos de varios tamaños y tipos.

  •     Mediciones Dinámicas: Este tipo de mediciones se encarga de registrar todas las operaciones en una bitácora para un análisis posterior. De esta manera se tiene información respecto a la frecuencia con que se realizan ciertas operaciones.

Ventajas:
  •          Tolerancia de fallas
  •          No necesita llamadas OPEN/CLOSE
  •          No se desperdicia el espacio del servidor en tablas
  •          No existe límite para el número de archivos abiertos
  •          No hay problemas si un cliente falla
     
    Servidores con Estado: Conservan la información de estado de los clientes entre las solicitudes. Esto es lo que ocurre en los sistemas centralizados.
Ventajas:
  •          Mensajes de solicitud más cortos
  •          Mejor desempeño
  •          Es posible la lectura adelantada
  •          Es más fácil la idempotencia
  •          Es posible la cerradura de archivos



Hardware reciente

     Existen muchos dispositivos hardware que en los últimos años están abaratando sus costos, tales como las memorias. Esto mejoraría circunstancialmente los actuales servidores de archivos puesto que se podrá adquirir gran cantidad de gigabytes de memoria, aunque todavía se presente el problema de que la memoria sea volátil, es decir, que cuando se apaga el sistema se borran los archivos.


     Una nueva innovación en hardware son los discos ópticos que ahora pueden ser utilizados más de una vez. Aunque son un poco más caros que las cintas de video siempre han sido un aporte importante para los sistemas de archivos, principalmente en el soporte de backups.

    

Escalabilidad


       El concepto de escalabilidad propone que cualquier computador individual ha de ser capaz de trabajar independientemente como un sistema de archivos distribuido, pero también debe poder hacerlo conectado a muchas otras máquinas.

      Un sistema de archivos debería funcionar tanto para una docena de equipos como para varios millares. Igualmente no debería ser determinante el tipo de red utilizada (LAN o WAN) ni las distancias entre los equipos.


Tolerancia de fallas.


      En la actualidad, la mayor parte de los sistemas de cómputo no presentan tolerancia a fallas. Es común escuchar en las agencias bancarias la frase: "No hay sistema", por lo que tomamos este hecho como algo absolutamente normal. Salvo algunos sistemas especializados como los que se utilizan para el control de tráfico aéreo, otros sistemas no presentan este comportamiento que debería ser el óptimo.

       

Vídeos :

MEMORIA COMPARTIDA DISTRIBUIDA

Memoria Compartida Distribuida.

 Definición.  


      Los sistemas de  memoria compartida distribuida (DSM) representan la creación hibrida de dos tipos de computación paralelos: la memoria distribuida en sistemas multiprocesador y los sistemas distribuidos. Ellos proveen la abstracción de memoria compartida en sistemas con memorias distribuidas físicamente y consecuentemente combinan las mejores características de ambos enfoques.


 Modelos de Consistencia. 


      La cuestión de la consistencia adquiere importancia en los sistemas DSM que replican el contenido de la memoria compartida mediante su almacenamien­to en las cachés de computadores separados. Cada proceso tiene un gestor de réplicas local, el cual está encargado de mantener copias en caché para los objetos. En la mayor parte de las implementaciones, los datos se leen desde las réplicas loca­les por cuestiones de eficiencia, pero las actualizaciones deben propagarse al resto de gestores de réplica.





 Memoria Compartida Distribuida con base en páginas.


     El esquema de DSM propone un espacio de direcciones de memoria virtual que integra la memoria de todas las computadoras del sistema, y su uso se realiza mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único nodo. Cuando un programa intenta acceder a una posición virtual de memoria, se comprueba si esa página se encuentra de forma local. Si no se encuentra, se provoca un fallo de página, y el sistema operativo solicita la página al resto de nodos. El sistema funciona de forma análoga al sistema de memoria virtual tradicional, pero en este caso los fallos de página se propagan al resto de ordenadores, hasta que la petición llega al nodo que tiene la página virtual solicitada en su memoria local. A primera vista este sistema parece más eficiente que el acceso a la memoria virtual en disco, pero en la realidad ha mostrado ser un sistema demasiado lento en ciertas aplicaciones, ya que provoca un tráfico de páginas excesivo.

 Memoria Compartida Distribuida con Variables.


Un método más estructurado que la DSM con base a páginas consiste en compartir sólo ciertas variables y estructuras de datos necesarias para más de un proceso. Ahora el problema pasa a ser la forma de mantener una base de datos distribuida, en potencia duplicada, consistente en las variables compartidas.


Mas Informacion


 Memoria Compartida Distribuida basada en objetos.

     Una alternativa al uso de páginas es tomar el objeto como base de la transferencia de memoria. Aunque el control de la memoria resulta más complejo, el resultado es al mismo tiempo modular y flexible, y la sincronización y el acceso se pueden integrar limpiamente. Otra de las restricciones de este modelo es que todos los accesos a los objetos compartidos han de realizarse mediante llamadas a los métodos de los objetos, con lo que no se admiten programas no modulares y se consideran incompatibles.




 Casos de estudio.


          La memoria compartida distribuida se implementa utilizando uno de los siguientes métodos o bien una combinación de ellos, hardware especializado, memoria virtual paginada convencional o middleware:

Hardware: las arquitecturas multiprocesador de memoria compartida basadas en una arquitec­tura NUMA (por ejemplo, Dash [Lenoski y otros 1992] y PLUS [Bisiani y Ravishankar 1990] se basan en hardware especializado para proporcionar a los procesadores una visión consistente de la memoria compartida. Gestionan las instrucciones de acceso a memoria LOAD y STORE de forma que se comuniquen con la memoria remota y los módulos de caché según sea necesa­rio para almacenar y obtener datos. Esta comunicación se realiza sobre sistemas de intercone­xión de alta velocidad similares a una red. El prototipo del multiprocesador Dash tiene 64 no­dos; conectados mediante una arquitectura NUMA.


Memoria virtual paginada: muchos sistemas, incluyendo Ivy [Li y Hudak 1989], Munin [Carter y otros 1991], Mirage [Fleisch y Popek 1989], Clouds [Dasgupta y otros 1991], Choices [Sane y otros 1990], COOL (Lea y otros 1993] y Mether [Minnich y Farber 1989], implementan DSM como una región de memoria virtual que ocupa el mismo rango de direcciones en el espacio de direcciones de cada proceso participante. Este tipo de implementación normalmente sólo es factible sobre una colección de computadores homogéneos con formatos de datos y de paginación comunes.


Middleware: algunos lenguajes del tipo de Orca [Bal y otros 1990] y middleware como Linda [Carriero y Gelernter 1989] junto con sus derivados JavaSpaces y TSpaces [Wyckoff y otros 1998] proporcionan DSM sin necesidad de soporte hardware o de paginación, de una forma independiente de la plataforma.


                                                                Vídeos:





Menú Principal

domingo, 7 de julio de 2013

SEGURIDAD Y NUEVAS TECNOLOGÍAS EN SISTEMAS DISTRIBUIDOS





El punto de la seguridad es delicado en este tipo de computación distribuida pues las conexiones se hacen de forma remota y no local, entonces suelen surgir problemas para controlar el acceso a los otros nodos. Esto puede aprovecharse para un ataque de DoS, aunque la red no va a dejar de funcionar porque uno falle. Esa es una ventaja de este sistema grid.


Cuando hablamos de la seguridad de los sistemas distribuidos nos referimos a el resguardo de la información que contiene el sistema, ya se en software, hardware o datos, los cuales deben ser protegidos contra posibles ataques, en cuanto a modificación o robo de información entre otros.La seguridad es muy importante ya que puede disminuir el ataque de la información, por eso es recomendable tener como prioridad la seguridad para que todo se maneje muy bien y no ocurran problemas.

GRID: La computación en grid o en malla es un nuevo paradigma de computación distribuida en el cual todos los recursos de un número indeterminado de computadoras son englobados para ser tratados como un único super ordenador de manera transparente.




SEGURIDAD

CONFIDENCIALIDAD: Nos dice que los objetos de un sistema han de ser accedidos únicamente por elementos autorizados a ello, y que esos elementos autorizados no van a convertir esa información en disponible para otras entidades.

LA INTEGRIDAD: Significa que los objetos sólo pueden ser modificados por elementos autorizados, y de una manera controlada.

LA DISPONIBILIDAD: Indica que los objetos del sistema tienen que permanecer accesibles a elementos autorizados; es el contrario de la negación de servicio.

CRIPTOGRAFIA

La criptografía es un proceso para transformar datos, generalmente texto claro a un texto clave o cifrado, y que sólo puede ser convertido nuevamente en un texto claro y entendible usando una llave en particular y aplicándole un algoritmo apropiado. Por lo general, las técnicas de criptografía se aplican antes de que la información sea almacenada o transmitida por algún canal físico, en el caso de una red. Existen varios tipos o categorías en que se clasifican las técnicas de encriptación de información.



FIRMA DIGITAL


Mas información acerca de la firma digital visite: 

Como Sera El día de mañana con los avances tecnológicos.