lunes, 21 de mayo de 2012

Instalacion de Sistemas Operativos Distribuidos

Software básico que controla una computadora. El sistema operativo tiene tres grandes funciones: coordina y manipula el hardware de la computadora, como la memoria, las impresoras, las unidades de disco, el teclado o el mouse; organiza los archivos en diversos dispositivos de almacenamiento, como discos flexibles, discos duros, discos compactos o cintas magnéticas, y gestiona los errores de hardware y la pérdida de datos.


Los sistemas operativos controlan diferentes procesos de la computadora. Un proceso importante es la interpretación de los comandos que permiten al usuario comunicarse con el ordenador. Algunos intérpretes de instrucciones están basados en texto y exigen que las instrucciones sean tecleadas. Otros están basados en gráficos, y permiten al usuario comunicarse señalando y haciendo clic en un icono. Por lo general, los intérpretes basados en gráficos son más sencillos, pero muchos usuarios expertos prefieren los intérpretes de instrucciones basados en texto porque son más potentes.

Sistemas Distribuidos Y La Sociedad


Sistemas Distribuidos
“Sistemas cuyos componentes hardware y software, que están en ordenadores conectados en red, se comunican y coordinan sus acciones mediante el paso de mensajes, para el logro de un objetivo. Se establece la comunicación mediante un protocolo prefijado por un esquema cliente-servidor”.
La Computación Cliente Servidor.- Este modelo, que predomina en la actualidad, permite descentralizar el procesamiento y recursos, sobre todo, de cada uno de los servicios y de la visualización de la Interfaz Gráfica de Usuario. Esto hace que ciertos servidores estén dedicados solo a una aplicación determinada y por lo tanto ejecutarla en forma eficiente.

Sistema donde el cliente es una máquina que solicita un determinado servicioy se denomina servidor a la máquina que lo proporciona. Los servicios pueden ser:
•Ejecución de un determinado programa.
•Acceso a un determinado banco de información.
•Acceso a un dispositivo de Hardware.

Estandares Administracion En Sistemas Distribuidos


Aquellas normas usuales, los propósitos, los objetivos, a alcanzar, los datos de carácter histórico las directrices que guían las actividades, las predicciones sobre el volumen de estas, las metas a alcanzar y aquellos índices que integran los planes , y todo dato o cifra que pueda emplearse como medida para cumplirlas, son considerados como estándares.
Estas medidas son indispensables para el control, ya que indican la manera en que deseas que se ejecute una actividad. En la práctica, son los objetivos declarados y definidos de la organización y por esa razón los estándares deben abarcar las funciones básicas y áreas clave de los resultados logrados.
Para construir los estacares, debe partirse del análisis de procesos, como las normas de trabajo o de costos y la recopilación de experiencias anteriores.
Estándares estadísticos o históricos: parten del análisis de datos de experiencias logradas, que muchas veces son complementadas con el criterio personal.

MCD En Base a Variables


En los MCD basados en variables se busca evitar la comparticion falsa ejecutando un programa en cada CPU que se comunica con una central, la que le provee de variables compartidas, administrando este cualquier tipo de variable, poniendo variables grandes en varias paginas o en la misma pagina muchas variables del mismo tipo, en este protocolo es muy importante declarar las variables compartidas.



MCD En Base a Objetos

En los MCD basados en objetos se busca el acceso a datos por medio de la encapsulacion de la info. y repartida a través de la red, estos objetos serán definidos por el Programador y las CPU´s cambiaran los estados según procedan con los accesos.

MCD En Base a Paginas

El esquema de MCD propone un espacio de direcciones de memoria virtual que integre la memoria de todas las computadoras del sistema, y su uso mediante paginación. Las páginas quedan restringidas a estar necesariamente en un único ordenador. 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 computadoras. 
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 ordenador 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.

Estricta Causal Secuencial Debil

Consistencia Estricta
El modelo de consistencia más restrictivo es llamado consistencia estricta y es definido por la siguiente condición Cualquier lectura sobre un item de dato x retorna un valor correspondiente con la más reciente escritura sobre x
a) Un almacenamiento estrictamente consistente.
b) Un almacenamiento que no es estrictamente consistente.
Consistencia Causal
El modelo de consistencia causal (Hutto and Ahamad, 1990) es un debilitamiento de la consistencia secuencial. Se hace una diferenciación entre eventos que están potencialmente relacionados en forma causal y aquellos que no. Las operaciones que no están causalmente relacionadas se dicen concurrentes.
Consistencia secuencial
La consistencia secuencial es una forma ligeramente más débil de la consistencia estricta. Satisface la siguiente condición:
El resultado de una ejecución es el mismo si las operaciones (lectura y escritura) de todos los procesos sobre el dato fueron ejecutadas en algún orden secuencial y las operaciones de cada proceso individual aparecen en esta operaciones de cada proceso individual aparecen en esta secuencia en el orden especificado por su programa.
Consistencia Débil
Los accesos a variables de sincronización asociadas con los datos almacenados son secuencialmente consistentes.


Modelos De Consistencia



La duplicidad de los bloques compartidos aumenta el rendimiento, pero produce un problema de consistencia entre las diferentes copias de la página en caso de una escritura. Si con cada escritura es necesario actualizar todas las copias, el envío de las páginas por la red provoca que el tiempo de espera aumente demasiado, convirtiendo este método en impracticable. Para solucionar este problema se proponen diferentes modelos de consistencia, que establezcan un nivel aceptable de acercamiento tanto a la consistencia como al rendimiento. Nombramos algunos modelos de consistencia, del más fuerte al más débil: consistencia estricta, secuencial, causal, PRAM, del procesador, débil, de liberación y de entrada.



Configuraciones Memoria Compartida Distribuida

COMPUTACIÓN PARALELA
Un computador paralelo es un conjunto de procesadores capaces de cooperar en la solución de un problema.
El problema se divide en partes. Cada parte se compone de un conjunto de instrucciones. Las instrucciones de cada parte se ejecutan simultáneamente en diferentes CPUs.
Técnicas computacionales que descomponen un problema en sus tareas y pistas que pueden ser computadas en diferentes máquinas o elementos de proceso al mismo tiempo.
Por qué utilizar computación paralela?
 Reducir el tiempo de procesamiento
 Resolver problemas de gran embergadura.
 Proveer concurrencia.
 Utilizar recursos remotos de cómputo cuando los locales son escasos.
 Reducción de costos usando múltiples recursos ”baratos” en lugar de costosas supercomputadoras.
 ampliar los límites de memoria para resolver problemas grandes.

UNIDAD 4 Memoria Compartida Distribuida MCD

Los sistemas de Memoria Compartida Distribuida (MCD) [50], [51] son sistemas que, mediante software, emulan semántica de memoria compartida sobre hardware que ofrece soporte solo para comunicación mediante paso de mensajes. 


Este modelo permite utilizar una red de estaciones de trabajo de bajo costo como una maquina paralela con grandes capacidades de procesamiento y amplia escalabilidad, siendo a la vez fácil de programar. 


El objetivo principal de estos sistemas es permitir que un multicomputador pueda ejecutar programas escritos para un multiprocesador con memoria compartida.

lunes, 7 de mayo de 2012

Sistemas Distribuidos Tiempo Real


  • La capacidad de procesamiento está distribuida entre varios computadores interconectados.
  • Las actividades del sistema tienen requisitos de tiempo.
  • Necesidad de sistemas distribuidos:
  • Requisitos de procesamiento.
  • Distribución física del sistema.
  • Fiabilidad: Tolerancia a fallos.
  • Los sistemas distribuidos de tiempo real (SDTR) son complicados de realizar.
  • Se consideran sistemas débilmente acoplados.
  • Comunicación mediante mensajes
  • El tiempo de comunicación es significativo.
  • Ej. Sistemas multimedia, SCADA, aviónica, fabricación integrada, robótica.
  • Distintos tipos de requisitos temporales
  • Se consideran, fundamentalmente, sistemas críticos

Coplanificacion


TOMA EN CUENTA LOS PATRONES DE COMUNICACION 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 PLANIFICACION ROUND ROBIN:
  • TODOS LOS PROCESADORES EJECUTAN EL PROCESO EN EL ESPACIO “0” DURANTE UN CIERTO PERIODO FIJO.
  • TODOS LOS PROCESADORES EJECUTAN EL PROCESO EN EL ESPACIO “1” DURANTE UN CIERTO PERIODO FIJO, ETC.
—SE DEBEN MANTENER SINCRONIZADOS LOS INTERVALOS DE TIEMPO.
—TODOS LOS MIEMBROS DE UN GRUPO SE DEBEN COLOCAR EN EL MISMO N° DE ESPACIO DE TIEMPO PERO EN PROCESADORES DISTINTOS.

Modelos Algoritmos Diseño Implantación


Los principales aspectos son los siguientes:
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.
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.

Hibrido

Modelo Híbrido:
– Los trabajos interactivos se ejecutan en las estaciones de trabajo mientras que los no interactivos se ejecutan en la pila de procesadores.
• El Modelo de las Estaciones de trabajo suele coincidir en la actualidad con la mayoría de las organizaciones.
– Cuando se utiliza este modelo hay una serie de aspectos a tener en cuenta:
• La asignación de Procesos a los Procesadores.
• Los Algoritmos de Distribución de la Carga.
– • La Planificación de los Procesos en un Sistema Distribuido.


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:
  • Decidir cuándo ejecutar el proceso de manera local y cuándo es necesario buscar estaciónes inactivas o no locales que tienen una conexion a la misma red pero fuera de ella.
Para el modelo de la pila de procesadores:
  • Decidir dónde ejecutar cada nuevo proceso respecto de la misma maquina que es la tabla(lista) de los procesos que se crean dentro de la maquina.

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 colas:
  • Llamamos “l” a la tasa de entradas totales de solicitudes por segundo de todos los usuarios combinados.
  • Llamamos “m” a la tasa de procesamiento de solicitudes por parte del servidor.
  • Para una operación estable debe darse que “m > l”:
-Se pueden permitir pequeños lapsos de tiempo en los que la tasa de entrada exceda a la de servicio.
  • Llamamos “T” al promedio de tiempo entre la emisión de una solicitud y la obtención de una respuesta completa:
-T = 1 / ( m - l ).
-Cuando “ l ” tiende a “0”, “T” no tiende a “0”.
  • Supongamos que tenemos “n” multiprocesadores personales, cada uno con cierto número de cpu y con su propio sistema de colas con tasas “ l ” y “ m ” y tiempo “T”:
-Si reunimos todas las cpu y formamos una sola pila de procesadores tendremos un solo sistema de colas en vez de “n” colas ejecutándose en paralelo.
-La tasa de entrada será “n l”, la tasa de servicio será “n m” y el tiempo promedio de respuesta será:
¡T1 = 1 / (n m - n l) = 1 / n ( m - l) = T / n.
-Conclusión: si reemplazamos “n” pequeños recursos por uno grande que sea “n” veces más poderoso:
Podemos reducir el tiempo promedio de respuesta “n” veces.
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.

Hilos Y Multihilos


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


UNIDAD 3 Procesos Y Procesadores En Sistemas Distribuidos


Procesos Procesadores Conceptos Basicos

En sistemas operativos, es una característica que permite a una aplicación realizar varias tareas concurrentemente. 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, etc. Esta técnica permite simplificar el diseño de una aplicación que debe llevar a cabo distintas funciones simultáneamente.
Los hilos de ejecución que comparten los mismos recursos, sumados a estos recursos, son en conjunto conocidos como un proceso. El hecho de que los hilos de ejecución de un mismo proceso compartan los recursos hace que cualquiera de estos hilos pueda modificar éstos. Cuando un hilo modifica un dato en la memoria, los otros hilos acceden e ese dato modificado inmediatamente.

Mapeo De Direcciones

Para poder ejecutar instrucciones, si no sabemos en qué parte de la memoria estarán cargadas, debemos tener un mecanismo de traducción de direcciones virtuales a reales. Para ello, se necesitan dos cosas. Primero, el compilador manejará una dirección base más un desplazamiento al referirse a las instrucciones. Segundo, el sistema operativo asignará como dirección base el número de página, al paginar al proceso. De esta manera, puede buscarse el inicio de una página en memoria, sumarle el desplazamiento y así obtener la dirección real de una instrucción.
Nótese que en el diagrama se tiene una tabla de proceso y ahí mismo se maneja la dirección inicial de la tabla de páginas. En algunos sistemas operativos, estas dos tablas se manejan por separado.

Nominacion Caracteristicas Y Estructuras

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.



Servidores Y Agentes De Nombres

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

Sincronizacion Sistemas Distribuidos


En sistemas con una única CPU las regiones críticas, la exclusión mutua y otros problemas de sincronización son resueltos generalmente utilizando métodos como semáforos y monitores. Estos métodos no se ajustan para ser usados en sistemas distribuidos ya que invariablemente se basan en la existencia de una memoria compartida.
No es posible reunir toda la información sobre el sistema en un punto y que luego algún proceso la examine y tome las decisiones.
En general los algoritmos distribuidos tienen las siguientes propiedades:
1)- la información relevante está repartida entre muchas máquinas
2)- los procesos toman decisiones basadas solamente en la información local disponible
3) - debería poder evitarse un solo punto que falle en el sistema
4)- no existe un reloj común u otro tiempo global exacto
Si para asignar un recurso de E/S un proceso debe recolectar información de todos los procesos para tomar la decisión esto implica una gran carga para este proceso y su caída afectaría en mucho al sistema.
Idealmente, un sistema distribuido debería ser más confiable que las máquinas individuales. Alcanzar la sincronización sin la centralización requiere hacer cosas en forma distinta a los sistemas operativos tradicionales.

Tolerancia a Fallos


La difusión de los sistemas distribuidos incrementa la demanda de sistemas que esencialmente nunca fallen [25, Tanenbaum].
Los sistemas tolerantes a fallos requerirán cada vez más una considerable redundancia en hardware, comunicaciones, software, datos, etc.
La réplica de archivos sería un requisito esencial.
También debería contemplarse la posibilidad de que los sistemas funcionen aún con la carencia de parte de los datos.
Los tiempos de fallo aceptables por los usuarios serán cada vez menores.

Comunicacion En Grupo


La comunicación se clasifica deacuerdo al numero de usuarios alos que se le a enviado el mensaje.
-BROADCAST O DIFUSION FORZADA un nodo emite todos los escuchan y solo contesta a quien va dirigido el mensaje
-MULTICAST se entrega el msj a todos los anfitriones HOST que están compuestos de ciertas características.
-UNICAST o POINTCAST un nodo emite y otro recibe, solo escucha aquel a quien se dirigió el msj.
Una clasificación adicional es la realizada en base a grupos
-LISTAS DE DESTINARIOS se tiene una lista de aquellos alos que se les enviara el mensaje.
-IDENTIFICADOR DE GRUPO se forman grupos y el msj es dirigido solo a los miembros de ese grupo.
-PREDICADOR DE PERTENENCIA se envía y otro recibe, solo escucha aquel a quien se dirigió el mensaje.

Comunicacion Con Rpc

El mecanismo general para las aplicaciones cliente-servidor se proporciona por el paquete Remote Procedure Call (RPC). RPC fue desarrollado por Sun Microsystems y es una colección de herramientas y funciones de biblioteca. Aplicaciones importantes construidas sobre RPC son NIS, Sistema de Información de Red y NFS, Sistema de Ficheros de Red.


Un servidor RPC consiste en una colección de procedimientos que un cliente puede solicitar por el envío de una petición RPC al servidor junto con los parámetros del procedimiento. El servidor invocará el procedimiento indicado en nombre del cliente, entregando el valor de retorno, si hay alguno. 

Comunicacion Cliente Servidor Sockets

Origen de los socket tuvo lugar en una variante del sistema operativo Unix conocida como BSD Unix.
Cliente-Servidor es el modelo que actualmente domina el ámbito de comunicación, ya que descentraliza los procesos y los recursos. Es un Sistema donde el cliente es una aplicación, en un equipo, que solicita un determinado servicio y existe un software, en otro equipo, que lo proporciona.

Los servicios pueden ser;
a)Ejecución de un programa. 
b)Acceso a una Base de Datos. 
c)Acceso a un dispositivo de hardware.


UNIDAD 2 Comunicación en los sistemas operativos distribuidos

COMUNICACIÓN Sod.


Un modelo de interacción entre los procesos de un sistema distribuido que es el modelo cliente-servidor. Para implementarlo, el sistema dispone de dos llamadas al sistema, send y receive, que las aplicaciones utilizan de forma conveniente. Estas primitivas, a pesar de constituir la base de la construcción de los sistemas distribuidos, pertenecen a un nivel demasiado bajo como para programar de forma eficiente aplicaciones distribuidas. 
La llamada a procedimiento remoto constituye un mecanismo que integra el concepto cliente-servidor con la programación convencional basada en llamadas a procedimientos. La idea surgió en 1984 y consiste en que el cliente se comunica con el servidor mediante una llamada ordinaria a un procedimiento.



  1. include <header.h>
void main(void) {
 struct mensaje m1, m2; /* Mensajes entrante y saliente */
 int r;

 while(1)
 {
  receive(FILE_SERVER, &m1);  /* El servidor se bloquea esperando un mensaje */
  switch(m1.opcode)
  {
   case CREATE: r = do_create(&m1, &m2); break;  
   case READ: r = do_read(&m1, &m2); break;  
   case WRITE: r = do_write(&m1, &m2); break;  
   case DELETE: r = do_delete(&m1, &m2); break;  
   case DELETE: r = E_BAD_OP; break;
  }
  m2.result = r;
  send(m1.source, &m2);
 }
}