Sistemas Distribuidos Alan David Manotas Llinรกs Ing. Sistemas Esp. Telecomunicaciones CCNAI-II Certificado SCE- SIEMON aldamalli@gmail.com skype: the_bighand 316 - 4932151
Introducción a los Sistemas Distribuidos Computación Moderna (1945 - 1985)
Caracteristicas: – – –
Computadoras Grandes (Mainframe). Carencia de Cableado Estructurado o de redes de datos. Computadoras personales super costosas.
Eventos que desencadenan desarrollo de Sistemas Distribuidos:
1. Desarrollo de poderosos Microprocesadores (CPU de 16, 32, 64 bits) con capacidades muy alta de procesamiento. 2. Desarrollo de las Redes. -Invención de Redes de Area Local de alta Velocidad (LAN), Redes de Area Amplia (WAN).
Introducciรณn a los Sistemas Distribuidos Que es un Sistema Operativo?
1. El S.O. como mรกquina extendida: Proporciona a los usuarios una maquina virtual que tenga un uso mas conveniente que la mรกquina real. 2. El S.O. como controlador de recursos: Controla con eficiencia las distintas partes del sistema
Capas Sistema de computo
Capa Fisica: Contiene los dispositivos fisicos tales como memoria RAM, MB, Interfaces de Red, Fuentes de Poder, Monitor, dispositivos de entrada/salida, etc. Microprogramaciรณn: Software (microprograma) primitivo que controla en forma directa los dispositivos y proporciona una interfaz mรกs limpia con la capa superior. Lenguaje de Maquina: Conjunto de instrucciones que interpreta el microprograma No hace parte de la maquina, este lenguaje maneja de 50 a 300 instrucciones, que Sirven a grosso modo para desplazar datos, operaciones aritmeticas, comparar valores..
Sistema Operativo: Parte del software que se ejecuta en modo central รณ modo de Supervisiรณn. Campiladores: Traduce un programa escrito en un lenguaje de programaciรณn, Generando un equivalente en lenguaje de maquina. Los compiladores y editores se ejecutan en modo usuario.
Clasificación de Sistemas Operativos 1. S.O. Monotareas: Solo pueden manejar un proceso en cada momento, ejecuta tareas de una a una. 2. S.O. Multitarea: Ejecuta varias tareas al mismo tiempo, existe varios tipos de multitarea, multitarea de tiempo compartido, etc. Procesamiento en primer plano o segundo plano. 3. S.O. Monousuarios. 4. S.O. Multiusuarios. 5. S.O. por lotes. 6. S.O. de tiempo real: Son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Se utilizan en entornos donde son procesados un gran número de sucesos o eventos. Muchos Sistemas Operativos de tiempo real son construidos para aplicaciones muy específicas como control de tráfico aéreo, bolsas de valores, control de refinerías, control de laminadores.
Que es un Sistema Distribuido?
DEFINICION: A. TANENBAUM “Un sistema distribuido es una colección de computadoras independientes que aparecen ante los usuarios del sistema como una única computadora” Hardware ( Maquinas Autonomas)
2 Aspectos Software (Único Sistema)
Ejemplos de Sistemas Distribuidos •
Sistema de Información de un Banco.
-
Cada sucursal maneja B.D de sus clientes, capacidad de comunición con sucursales de la misma entidad y con la oficina central de comunicaciones.
•
Internet, Intranet Cadenas de supermercados (EXITO) Telefonía Móvil, computación ubicua. Aerolineas – Sistema de Reservaciones
• •
•
Ventajas Distribuidos Vs Centralizados Elementos
Descripci贸n
Econom铆a
Los microprocesadores ofrecen una mejor proporci贸n precio/rendimiento que los mainframe
Velocidad Rendimiento
Tiene mayor procesamiento que un mainframe
Confiabilidad
Distribuye la carga de trabajo en muchas maquinas
Escalabilidad
Crecimiento por incrementos
Desventajas de Sistemas Distribuidos Elementos
Descripción
Software
Existen pocas aplicaciones distribuidas y el personal escaso
Redes
La plataforma de comunicaciones puede colapsar o causar otros problemas
Seguridad
Estado crítico – vulneración de los datos
Conceptos de Hardware Aunque todos los sistemas distribuidos constan de varios CPU, existen diversas formas de organizar el hardware; en particular, en la forma de interconectarlas y comunicarse entre si. Clasificacion segĂşn FLYNN. SISD(Single Instruction Single Data)= Un solo flujo de Instrucciones un solo flujo de Datos. Todas las computadoras tradicionales de un unico CPU. SIMD(Single Instruction Multiple Data)= Un flujo de instrucciones y varios flujos de datos. Procesamiento en paralelo con varios microprocesadores, utiles para computos que repiten muchisimos datos.
Conceptos de Hardware MISD(Multiple Instruction Single Data)= Flujo de multiples instrucciones y un solo flujo de Datos. No es aplicable. MIMD(Multiple Instruction Multiple Data)= Un grupo de computadoras independientes, cada una con su propio contador del programa, programa y datos. Todos los sistemas distribuidos son MIMD. Multiprocesadores (Memoria Compartida) MIMD Multicomputadoras (Memoria Privada)
Aspectos del Diseño Transparencia: Esta caracteristica oculta la distribución a los usuarios e incluso de los programas de aplicación. El concepto de transparecia se puede aplicar de la siguente manera: Tipo
Significado
Localización
No se identifica la localización de los recursos. Ej: /maquina1/programa.c
Migración
Los recursos se pueden mover sin tener que cambiar sus nombres. Ej: /work/new no revela posición del servidor.
Réplica
Los usuarios no pueden indicar el numero de copias existentes.
Concurrencia
Varios usuario pueden compartir recurso de manera automatica.
Paralelismo
Actividades en paralelo sin conocimiento de los usuarios.
Flexibilidad: Es la facilidad de amalgamiento, existen dos lineas de pensamiento para los sistemas distribuidos, monoliticos y micronucleo.
Confiabilidad: la capacidad de disponibilidad de los diferentes elementos de hardware del sistema. Probabiliad de funcionamiento de un servidor es de 0.92. Otro aspecto de la confiabilidad es la seguridad y la tolerancia a fallos. Desempe単o: Hace referencia a el tiempo de respuesta, rendimiento o numero de trabajos desarrollados por horas, uso del sistema y consumo de la red.
Escalabilidad: Permita el crecimiento para aumentar el rendimiento del sistema.
Gesti贸n de Procesos Todas las computadoras modernas pueden hacer varias cosas al mismo tiempo, mientras se ejecutan aplicativos de usuarios, tambien puede estar leyendo de un disco, enviando texto a una pantalla o impresora, etc. La CPU conmuta de proceso en proceso. Multiprogramaci贸n
Hombre
Pseudo Parelelismo (rapida conmutacion de la CPU)
Puede ejecutar hasta 2 procesos simultaneos
Concepto de Proceso Modelo de Proceso Un PROCESO, no es mรกs que un programa (imagen del programa) en ejecucion, que incluye los valores actuales del contador, registro, variables y demรกs. Todo el S.W. ejecutable esta organizado en una serie de procesos secuenciales. Conceptualmente cada proceso tiene asignado un porcentaje de una CPU virtual, pero para entender el sistema es mucho mรกs facil pensar en una colecciรณn de procesos que se ejecutan en pseudo paralelismo que tratar de seguir la pista a la conmutaciรณn real de la CPU.
Observaci贸n Un proceso es una actividad que tiene programa, entradas, salidas y un estado. Se puede compartir un procesador entre varios procesos, utilizando alg煤n algoritmo de planificaci贸n, que determina cuando dejar de atender un proceso para transferir la utilizacion de la CPU a otro proceso, teniendo en cuenta la politicas del planificador.
Estados y transición de los Procesos Aunque cada proceso es una entidad independiente, con su propio contador de programa y estado interno, los procesos a menudo requieren comunicarse con otros procesos, un proceso podría generar ciertas salidas que sean entradas para otro proceso. A continuación un ejemplo de comunicación entre procesos:
[svoip@etc]# chkconfig | grep 5:Activo | more chkconfig: Actualiza y consulta información de los servicios del sistema según su nivel de ejecución (runlevel). grep: Selecciona una cadena de texto especifica, para nuestro ejemplo “5:Activo”. more: Realiza la paginación por pantalla.
Estados y transici贸n de los Procesos
Jerarqu铆as de Procesos En la mayoria de los S.O. se hace necesaria una forma de crear y destruir procesos cuando se requiera durante la operaci贸n.
FORK
Llamada al Sistema que crea una copia identica del proceso que hace la llamada.
Para tener en cuenta: Despues de la llamada FORK, el proceso padre sigue su ejecuci贸n en paralelo con el proceso hijo. El padre puede dar lugar a m谩s hijos, y los hijos tambien pueden ejecutar FORK, generando esto un arbol jerarquico de procesos de profundidad arbitraria.
Procesamiento de Interruciones Una interrupción es un evento que altera la secuencia en que la CPU ejecuta las instrucciones; es un hecho generado por el hardware. Cuando ocurre una interrucción, el S.O.: 1. 2. 3. 4.
Obtiene el control. Salva el estado del proceso interrumpido. Analiza la interrupción. Transfiere el control a la rutina indicada. Tipo de Interrupción
Descripción
SVC
Llamada al S.O.
E/S (> prioridad linux)
Cambio de estado de un canal o dispositivo.
Externa
Evento externo al sistema
De Reinicio
Reinicio del procesamiento
Verificación de Programa
Errores de proceso
Verificación de maquina
Implantación de los Procesos El S.O. utiliza una tabla (arreglo de estructuras) llamada Tabla de Procesos. Esta tabla tiene un dato por proceso y contiene información relativa al estado del proceso, contador del programa, aputador a la pila, asignación de memoria, estado de los archivos abiertos, información de contabiliad y planificación, etc. Los datos de esta tabla son indispensables para la alternacia de estados de los procesos (en ejecución – listos).
Planificación de Procesos Cuando más de un proceso es ejecutable, el S.O. debe decidir cual de ellos debe ejecutarse en primer termino. Planificador: Parte del S.O. que asigna los tiempos de CPU. Algoritmo de Planificación: Las politicas y/o priorización para la asignación del microprocesador.
Criterio
Descripción
Equidad
Garantiza proporción justa de CPU.
Eficacia
CPU ocupada 100%
Tiempo de Respuesta
< time de respuesta para usuarios interactivos
Tiempo de Regreso
< time de respuesta para usuarios por lotes para obtener sus resultados.
Rendimiento
Maximizar numero de tareas por hora
Planificacion Apropiativa Es la estrategia de permitir que procesos ejecutables (desde el punto de vista lógico) sean suspendidos en forma temporal. Planificación no Apropiativa Es el método de ejecucion de los procesos hasta terminar.
Para tener en cuenta: Para garantizar que ningún proceso se ejecute un tiempo excesivo, casi todas las computadoras tienen un cronómetro electrónico ó un reloj incluido, que provoca una interrupción en forma periodica. Frecuencia de 50 a 60 Hz (Hertz)
Tipos de Algoritmo de Planificaci贸n Algunos algoritmos de planificaci贸n son los siguientes: 1. 2. 3. 4. 5. 6. 7. 8.
FIFO (First In First Out) Round Robin. Por Prioridad. Colas Multiples. Primero el trabajo mas corto. Planificaci贸n Garantizada. Politiva vs Mecanismo Planificaci贸n de dos niveles.
PLANIFICACION FIFO
Es muy simple, los procesos se despachan de acuerdo con su tiempo de llegada a la cola de listos. Una vez que el proceso obtiene la cpu, se ejecuta hasta terminar, ya que es una disciplina “no apropiativa”. Puede ocasionar que procesos largos hagan esperar a procesos cortos y que procesos no importantes hagan esperar a procesos importantes. Es más predecible que otros esquemas. No puede garantizar buenos tiempos de respuesta interactivos. Suele utilizarse integrado a otros esquemas, por ejemplo, de la siguiente manera: • Los procesos se despachan con algún esquema de prioridad. • Los procesos con igual prioridad se despachan “FIFO”.
PLANIFICACION ROUND ROBIN (RR) Los procesos se despachan en “FIFO” y disponen de una cantidad limitada de tiempo de cpu, llamada “división de tiempo” o “cuanto”.
Si un proceso no termina antes de expirar su tiempo de cpu ocurren las siguientes acciones: • La cpu es apropiada. • La cpu es otorgada al siguiente proceso en espera. • El proceso apropiado es situado al final de la lista de listos. Es efectiva en ambientes de tiempo compartido. La sobrecarga de la apropiación se mantiene baja mediante mecanismos eficientes de intercambio de contexto y con suficiente memoria principal para los procesos.
PLANIFICACION POR PRIORIDAD Las ideas centrales son que cada proceso tiene asociada una prioridad y que el proceso ejecutable con máxima prioridad es el que tiene el permiso de ejecución. Para que los procesos de alta prioridad no se ejecuten indefinidamente, el planificador del sistema puede disminuir la prioridad del proceso en ejecución en cada interrupción del reloj.
Un algoritmo sencillo consiste en establecer que la prioridad sea “1 / f”, donde “f” es la fracción del último cuanto utilizado por el proceso. Un proceso que utilice 2 mseg (dos milisegundos) de su cuanto de 100 mseg (cien milisegundos) tendrá prioridad 50 (cincuenta). Un proceso que se ejecutó 50 mseg antes del bloqueo tendrá prioridad 2. Un proceso que utilizó todo el cuanto tendrá prioridad 1. Frecuentemente los procesos se agrupan en “Clases de Prioridad”, en cuyo caso se utiliza la Planificación con Prioridades entre las clases y con Round Robin (RR) dentro de cada clase.
PLANIFICACION DE COLAS MULTIPLES Proporcionan una estructura para lograr los siguientes objetivos: • Favorecer trabajos cortos. • Favorecer trabajos limitados por la Entrada / Salida para optimizar el uso de los dispositivos de Entrada / Salida. • Determinar la naturaleza de un trabajo lo más rápido posible y planificar el trabajo (proceso) en consecuencia.
Maxima Prioridad
Minima Prioridad
Qué es un Protocolo de Enrutamiento? 10.120.2.0
•
•
Un protocolo de enrutamiento es el encargado de determinar las rutas y de mantener la tabla de enrutamiento de manera actualizada. Una vez determinada la ruta, de puede enrutar el protocolo enrutado.
E0
Network Protocol Connected RIP IGRP
172.16.1.0
S0
Destination Network 10.120.2.0 172.16.2.0 172.17.3.0
Exit Interface
172.17.3.0
E0 S0 S1
Protocolo Enrutado: IP Protocolo de enrutamiento: RIP, IGRP
Sistemas Autónomos IGPs: RIP, IGRP
EGPs: BGP
Autonomous System 100
Autonomous System 200
Un sistema autómomo es un conjunto de redes y routers que se encuentran bajo un mismo “dominio” administrativo, por ejemplo un ISP. Los IGPs, son los protocolos de enrutamiento que funcionan al interior de un AS. Los EGPs, son protocolos de enrutamiento que sirven para enrutar entre AS.
Tipos de Protocolo de Enrutamiento B
Distance Vector
A
C D
Hybrid Routing
B A
C D
Link State
Distance Vector B A
C Distance—How Far Vector—In Which Direction
•
D
D
C
B
A
Routing Table
Routing Table
Routing Table
Routing Table
De manera periodica todos los routers envian la tabla de enrutamiento que poseen. En base al número de saltos.
Distance Vector: ¿Cómo funciona?. 10.1.0.0 E0
10.2.0.0 A
S0
Routing Table
•
S0
10.3.0.0 B
S1
Routing Table
S0
C
E0
Routing Table
10.1.0.0
E0
0
10.2.0.0
S0
0
10.3.0.0
S0
0
10.2.0.0
S0
0
10.3.0.0
S1
0
10.4.0.0
E0
0
Cada router empieza armar su tabla de enrutamiento a partir de las redes que conoce, inicialmente de las que esta directamente conectado.
Distance Vector: ¿Cómo funciona? 10.1.0.0 E0
10.2.0.0 A
S0
Routing Table
S0
10.3.0.0 B
S1
Routing Table
S0
C
E0
Routing Table
10.1.0.0
E0
0
10.2.0.0
S0
0
10.3.0.0
S0
0
10.2.0.0
S0
0
10.3.0.0
S1
0
10.4.0.0
E0
0
10.3.0.0
S0
1
10.4.0.0
S1
1
10.2.0.0
S0
1
10.1.0.0
S0
1
•
Luego empieza el intercambio de información entre los vecinos
Distance Vector: ¿Cómo funciona? 10.1.0.0 E0
10.2.0.0 A
S0
Routing Table
S0
10.3.0.0 B
S1
Routing Table
S0
C
E0
Routing Table
10.1.0.0
E0
0
10.2.0.0
S0
0
10.3.0.0
S0
0
10.2.0.0
S0
0
10.3.0.0
S1
0
10.4.0.0
E0
0
10.3.0.0
S0
1
10.4.0.0
S1
1
10.2.0.0
S0
1
10.4.0.0
S0
2
10.1.0.0
S0
1
10.1.0.0
S0
2
•
El proceso de intercambio de información continúa hasta que todos sepan como llegar a todas las redes.
Desventajas de los protocolos Distance Vectors.
Al ser la actualización de manera periódica. Le da lentitud de reacción, ante posibles cambios imprevistos en la red. (Esto se llama Convergencia). Además de ser lentos, son propensos a presentar Loops de enrutamiento. Funciona en topologias de red planas. Se garantiza convergencia, hasta para 16 routers. Sin embargo a pesar de los inconvenientes se han encontrado soluciones para contrarrestar estos problemas. Este es el caso de RIP. Donde ya existe RipV2 que resuelven los problemas.
Configurando un protocolo de enrutamiento Router(config)#router protocol [keyword] ď Ź
Definiendo un protocolo de enrutamiento
Router(config-router)#network network-number â&#x20AC;˘ El comando es mandatorio por cada protocolo de enrutamiento configurado.
Comunicación en los Sistemas Distribuidos La diferencia más importante entre un sistema distribuido y un sistema de un único procesador es la comunicación entre procesos. Sistemas 1 Procesador Memoria Compartida Memoria
Sistemas Distribuidos Memoria Independiente
La comunicación entre procesos, deben apegarse a reglas conocidas como PROTOCOLOS, estos protocolos toman formas de varias CAPAS, las cuales cumplen sus propias reglas y normas.
Protocolo con CAPAS. La comunicación en los S.D. se basa en la transferencia de mensajes. Cuando un proceso 1 quiere comunicarse con un proceso 2, se debe presentar los siguientes pasos: • •
•
Construir un mensaje Llamada al S.O., este se encarga del envío por medio de la red. Deben existir politicas y reglas para la comunicacion de mensajes.
Protocolos seg煤n Modelo OSI Orientado a la Conexi贸n PROTOCOLOS Sin Conexi贸n
Cada capa proporciona una INTERFAZ (Conjunto de operaciones para defenir el servicio que cada capa esta en capacidad de ofrecer). El protocolo n utiliza la informaci贸n de la capa n.
Sistema de Archivos 1.
2. 3.
Todas las aplicaciones de computadora necesitan almacenar y recuperar la información. Cuando un proceso termina, la información se pierde. Competencia entre procesos para compartir información, datos necesarios para el funcionamiento entre procesos.
Dispositivos de Almacenamiento de Datos
Unidades Externas (cintas, memoria Flash)
Unidades Internas (HDD)
Que es un Disco Duro? Es un dispositivo que permite el almacenamiento y recuperación de grandes cantidades de información. Los discos duros forman el principal elemento de la memoria secundaria de un ordenador, llamada así en oposición a la memoria principal o memoria RAM (Random Access Memory, memoria de acceso aleatorio).
Sistema de Archivos La memoria principal es volátil, muy rápida (ya que se trata de componentes electrónicos) pero de capacidad reducida. La memoria secundaria, en cambio, es no volátil, menos rápida (componentes mecánicos) y de gran capacidad. La memoria principal contiene los datos utilizados en cada momento por el ordenador pero debe recurrir a la memoria secundaria cuando necesite recuperar nuevos datos o almacenar de forma permanente los que hayan variado.
Estructura Fisica de un HDD. Cara 1 1. 2. 3. 4.
Cara 2
Platos o Discos. Cabezas. Eje. Controladora
Estructura de un Disco Duro (HDD) El número total de caras de un disco duro coincide con su número de cabezas. Cada una de estas caras se divide en anillos concéntricos llamados pistas. En los discos duros se suele utilizar el término cilindro para referirse a la misma pista de todos los discos de la pila. Finalmente, cada pista se divide en sectores Estructura Fisica de un HDD.
Los sectores son las unidades mínimas de información que puede leer o escribir un disco duro. Generalmente, cada sector almacena 512 bytes de información. nº sectores = nº caras * nº pistas/cara * nº sectores/pista
Ejercicio: Un disco duro ST33221A de Seagate tiene las siguientes especificaciones: cilindros = 6.253 cabezas = 16 sectores = 63 El número total de sectores direccionables es, por tanto, 6.253*16*63 = 6.303.024 sectores. Si cada sector almacena 512 bytes de información, la capacidad máxima de este disco duro será de 6.303.024 sectores * 512 bytes/sector = 3.227.148.228 bytes ~ 3 GB.
Tabla de Equivalencia Unidad
Equivalente
1 Byte
8 bits
1 KiloByte (KB)
1,024 Bytes
1 MegaByte (MB)
1,024 KB
1 GigaByte (GB)
1,024 MB
1 TeraByte (TB)
1,024 GB
1 PetaByte (PB)
1,024 TB
1 ExaByte (EB)
1,024 PB
1 ZettaByte (ZB)
1,024 EB
1 YottaByte (YB)
1,024 ZB
Estructura Lógica de un HDD La estructura lógica de un disco duro está formada por: 1. El sector de arranque (Master Boot Record) 2. Espacio particionado 3. Espacio sin particionar El sector de arranque es el primer sector de todo disco duro (cabeza 0, cilindro 0, sector 1). En él se almacena la tabla de particiones y un pequeño programa master de inicialización, llamado también Master Boot. Este programa es el encargado de leer la tabla de particiones y ceder el control al sector de arranque de la partición activa. Si no existiese partición activa, mostraría un mensaje de error. El espacio particionado es el espacio del disco que ha sido asignado a alguna partición. El espacio no particionado, es espacio no accesible del disco ya que todavía no ha sido asignado a ninguna partición. A continuación se muestra un ejemplo de un disco duro con espacio particionado (2 particiones primarias y 2 lógicas) y espacio todavía sin particionar.
El caso m谩s sencillo consiste en un sector de arranque que contenga una tabla de particiones con una sola partici贸n, y que esta partici贸n ocupe la totalidad del espacio restante del disco. En este caso, no existir铆a espacio sin particionar.
Preguntas?