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.
Por lo general, el termino tolerancia a fallos está asociado al almacenamiento en RAID. Los RAID utilizan la técnica Mirroring (en espejo) que permite la escritura simultánea de los datos en más de un disco del array.
En dedicar un grupo de procesadores a una aplicación mientras dure esta aplicación, de manera que cada hilo de la aplicación se le asigna un procesador.
Una desventaja es que si un hilo de una aplicación se bloquea en espera de una E/S o por sincronización de otro hilo, el procesador de dicho hilo quedara desocupado: no hay multiprogramación de procesadores.
Modelos y algoritmos con sus aspectos de diseño e implementación
Algoritmos deterministas vs. Heurísticos.
Algoritmos centralizados vs. Distribuidos.
Algoritmos óptimos vs. Subóptimos.
Algoritmos locales vs. Globales.
Algoritmos iniciados por el emisor vs. Iniciados por el receptor.
La historia de los microprocesadores comienza en el año 1971, con el desarrollo por parte de Intel del procesador 4004, para facilitar el diseño de una calculadora.
La época de los PC (Personal Computer), podemos decir que comienza en el año 1978, con la salida al mercado del procesador Intel 8086.
Estación de trabajo
La PC revoluciono el mercado de las microcomputadoras
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
Flexibilidad
Con disco
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
Modelo de pila de procesadores
Este modelo basa su funcionamiento en la teoría de colas.
En general este modelo puede reducir significativamente el tiempo de espera al tener una sola cola de procesadores a repartir.
La capacidad de cómputo se puede gestionar de mejor forma si se tiene micros con mayores capacidades.
Híbrido
Los sistemas híbridos combinan una variedad de buses de instrumentación y plataformas en un sistema.
Los sistemas híbridos proporcionan una mayor flexibilidad y una longevidad extendida para el sistema de prueba a un menor costo al permitirle combinar software y hardware existente con nuevas tecnologías.
Threads llamados procesos ligeros o contextos de ejecución.
Típicamente, cada thread controla un único aspecto dentro de un programa.
Todos los threads comparten los mismos recursos, al contrario que los procesos en donde cada uno tiene su propia copia de código y datos (separados unos de otros).
Los sistemas operativos generalmente implementan hilos de dos maneras:
Multihilo apropiativo
Permite al sistema operativo determinar cuándo debe haber un cambio de contexto.
La desventaja de esto es que el sistema puede hacer un cambio de contexto en un momento inadecuado, causando un fenómeno conocido como inversión de prioridades y otros problemas.
Multihilo cooperativo
Depende del mismo hilo abandonar el control cuando llega a un punto de detención, lo cual puede traer problemas cuando el hilo espera la disponibilidad de un recurso.
Un proceso es un concepto manejado por el sistema operativo que consiste en el conjunto formado por: Las instrucciones de un programa destinadas a ser ejecutadas por el microprocesador
Los procesadores distribuidos se pueden organizar de varias formas:
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. 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í:
La sincronización entre el emisor y el receptor.
La especificación y control de la actividad común entre procesos cooperativos.
La serialización de accesos concurrentes a objetos compartidos por múltiples procesos.
Haciendo referencia a los métodos utilizados en un sistema centralizado, el cual hace uso de semáforos y monitores; en un sistema distribuido se utilizan algoritmos distribuidos para sincronizar el trabajo común entre los procesos y estos algoritmos.
Actualmente se encuentran disponibles muchos servicios de sincronización atrevez de "la nube"
Relojes fijos
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.
Relojes logicos
El software del reloj lógico
El software para el reloj toma generalmente la forma de unmanejador de dispositivo, aunque no es un dispositivo de bloque.
La principales funciones del software manejador del reloj son:
Mantener la hora del día o tiempo real
Evitar que los procesos se ejecuten durante más tiempo del permitido.
Usos de la sincronizacion manejo de cache,
comunicacion en grupo exclusion mutua eleccion transacciones atomicas
e interbloqueo
Sincronización
La sincronización es la coordinación de procesos
que se ejecutan simultáneamente para completar una tarea, con el fin
de obtener un orden de ejecución correcto y evitar así estados
inesperados.
Comunicación en los sistemas operativos
distribuidosMemoria Caché
En los sistemas de archivos convencionales, el
fundamento para la memoria caché es la reducción de la E/S de disco
(lo que aumenta el rendimiento), en un SAD el objetivo es reducir el
tráfico en la red.
La copia de memoria caché
Conservar allí los bloques de disco de acceso más
reciente, para así manejar localmente los accesos repetidos a la
misma información y no aumentar el tráfico de la red. La caché es
un área de memoria utilizada para agilizar los procesos de
lectura-escritura.
Exclusión mutua
La condición de exclusión mutua se aplica a los os
que no pueden ser compartidos. Por ejemplo, varios procesos no pueden
compartir simultáneamente una impresora.
Los archivos de sólo lectura son un buen ejemplo de
recurso que puede compartirse. Si varios procesos intentan abrir un
archivo de sólo lectura al mismo tiempo, puede concedérseles acceso
al archivo de forma simultánea. Un proceso no necesita esperar nunca
para acceder a un recurso compartible.
La exclusión mutua permite compartir un recurso con varios procesos
Algoritmos de Elección
Son los algoritmos para la elección de un proceso
coordinador, iniciador, secuenciador. El objetivo de un algoritmo de
elección es garantizar que iniciada una elección ésta concluya con
el acuerdo de todos los procesos con respecto a la identidad del
nuevo coordinador.
Transacción atómica, transacción o acción
atómica
La principal propiedad de la transacción atómica
es el “todo o nada”: O se hace todo lo que se tenía que hacer
como una unidad o no se hace nada.
Un esquema para garantizar la adecuada
sincronización de la información en sistemas centralizados como
distribuidos es el uso de transacciones.
Las transacciones manejan 4 propiedades básicas:
atómicas, consistentes, aisladas y durables (ACID por sus siglas en
inglés).
La tecnología Cliente/Servidor es el procesamiento cooperativo de la información por medio de un conjunto de procesadores, en el cual múltiples clientes, distribuidos geográficamente, solicitan requerimientos a uno o más servidores centrales.
Desde el punto de vista funcional, se puede definir la computación Cliente/Servidor como una arquitectura distribuida que permite a los usuarios finales obtener acceso a la información de forma transparente aún en entornos multiplataforma. Se trata pues, de la arquitectura más extendida en la realización de Sistemas Distribuidos.
Un sistema Cliente/Servidor es un Sistema de Información distribuido basado en las siguientes características:
Servicio: unidad básica de diseño. El servidor los proporciona y el cliente los utiliza.
Recursos compartidos: Muchos clientes utilizan los mismos servidores y, a través de ellos, comparten tanto recursos lógicos como físicos.
Protocolos asimétricos: Los clientes inician “conversaciones”. Los servidores esperan su establecimiento pasivamente.
Transparencia de localización física de los servidores y clientes: El cliente no tiene por qué saber dónde se encuentra situado el recurso que desea utilizar.
Independencia de la plataforma HW y SW que se emplee.
Sistemas débilmente acoplados. Interacción basada en envío de mensajes.
Encapsulamiento de servicios. Los detalles de la implementación de un servicio son transparentes al cliente.
Escalabilidad horizontal (añadir clientes) y vertical (ampliar potencia de los servidores).
Integridad: Datos y programas centralizados en servidores facilitan su integridad y mantenimiento.
El modelo cliente servidor es muy conveniente para compartir recursos e información entre diferentes clientes y diferentes sistemas operativos
En el modelo usual Cliente/Servidor, un servidor, se activa y espera las solicitudes de los clientes. Habitualmente, programas cliente múltiples comparten los servicios de un programa servidor común. Tanto los programas cliente como los servidores son con frecuencia parte de un programa o aplicación mayores.
El Esquema de funcionamiento de un Sistema Cliente/Servidor sería:
El cliente solicita una información al servidor.
El servidor recibe la petición del cliente.
El servidor procesa dicha solicitud.
El servidor envía el resultado obtenido al cliente.
La nominación es una correspondencia entre objetos de datos lógicos y físicos. Por ejemplo, los usuarios tratan con objetos de datos lógicos representados por nombre de archivos, mientras que el sistema manipula bloques de datos físicos almacenados en las pistas de los discos. Generalmente un usuario se refiere a un archivo utilizando un nombre , el cual se transforma en un identificador numérico de bajo nivel, que a su vez se corresponde con bloques en disco. Esta correspondencia multinivel ofrece a los usuarios la abstracción de un archivo, que oculta los detalles de cómo y donde se almacena el archivo en disco.
En un SAD transparente se agrega una nueva dimensión de abstracción: La ocultación de la ubicación de los archivos de la red. En un sistema de archivos convencionales la función de nominación produce como resultado un intervalo de direcciones en disco, en un SAD este intervalo crece para incluir la máquina especifica en cuyo disco se almacena el archivo. Si se extiende un poco mas el tratamiento de los archivos como abstracciones, llegamos a la posibilidad de replicas de archivos. Dado un nombre de archivo, la correspondencia devuelve un conjunto de posiciones de las replicas de este archivo. En esta abstracción se ocultan tanto la experiencia de copias como su ubicación.
Estructuras de Nominación
Existen dos conceptos que hay que distinguir en relación con al correspondencia de nombres en un SAD.
Transparencia de Nominación, El nombre de archivo no revela ningún indicio sobre de la ubicación del almacenamiento físico del archivo.
Independencia de Ubicación, No es necesario modificar el nombre de un archivo cuando cambia su ubicación en el almacenamiento físico.
Esquema de Nominación
Hay tres enfoques principales para los esquemas de nominación en un SAD. En el enfoque mas sencillo, los archivos se nombran con una combinación del nombre de su anfitrión y su nombre local , lo que garantiza un nombre único dentro de todo el sistema. Por ejemplo, en Ibis, un archivo se identifica de manera única con el Nombre Anfitrión Local, donde nombre local es una ruta semejante a las de UNIX.
El segundo enfoque popularizado por el sistema de archivos de red (NFS, Network File System) de sun, ofrece una forma de unir directorios remotos a directorios locales, lo que da la apariencia a un árbol de directorios coherentes.
El tercer enfoque es la estructura mas compleja y difícil de mantener en la NFS, ya que cualquier directorio se puede unir a cualquier árbol de direcciones locales y la jerarquía resultante puede estar poco estructurada.
Servidores y agentes de nombres
La ICANN está formalmente organizada como una corporación sin fines de lucro y de utilidad pública.
En la actualidad, la ICANN está formalmente organizada como una corporación sin fines de lucro y de utilidad pública. Está administrada por una Junta de Directores, que está compuesta por seis representantes de las organizaciones de apoyo, sub-grupos que se ocupan de las secciones específicas de las políticas de ICANN en virtud de la competencia, ocho representantes independientes del interés público general, seleccionados a través de un Comité de nominaciones que representan a todas las circunscripciones de la ICANN, y el Presidente y Director Ejecutivo, nombrado por el resto de la Junta.
En la actualidad hay tres organizaciones de apoyo: la GNSO (Generic Names Supporting Organization) se ocupa de la formulación de políticas sobre dominios genéricos de nivel superior, ccNSO (Country Code Names Supporting Organization) se ocupa de la elaboración de políticas relativas a códigos de países en dominios de nivel superior, la ASO (Address Supporting Organization) se ocupa de la formulación de políticas en direcciones IP.
ICANN también se basa en algunos comités consultivos para recibir asesoramiento sobre los intereses y necesidades de los interesados que no participen directamente en las organizaciones de apoyo. Entre ellos figuran el Comité Asesor Gubernamental (GAC), que está integrado por representantes de un gran número de gobiernos nacionales de todo el mundo; el ALAC (At-Large Advisory Comité), que está integrado por representantes de organizaciones de los distintos usuarios de Internet de todo el mundo; el sistema DNS y TLG (Technical Liaison Group) compuesto por representantes de otras organizaciones técnicas internacionales de Internet.
Mapeo de direcciones
El mapeo de direcciones corresponde en la relación de equivalencia entre un tipo de nombre a otro tipo de nombre; por ejemplo, de un nombre de usuario a un nombre de sistema.
Mapeo de rutas
El mapeo de rutas consiste en la relación de equivalencia entre un tipo de ruta u otro tipo.
Recordar que las rutas consiste en la serie de ubicaciones para poder acceder a un recurso.
Otro nombre que recibe el mapeo de rutas es el de encaminamiento.
Modelo de Terry
El problema principal de cualquier sistema de nombre reside en encontrar de manera fácil,
sencilla y rápida cualquier recurso a través del identificador (nombre) dado.
Para solucionar este problema, Terry y otros propusieron un modelo de facilidades que
debe de poseer todo sistema de nombres, dichas características son las siguientes: