Sistemas Paralelos y Distribuidos

Documentos relacionados
Introducción al Computo Distribuido

1. Introducción 2. S.O. de Red. NFS 3. S.O. Distribuidos 4. Características de Diseño. Tema5: Sistemas Operativos Distribuidos

TEMA 10 INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS DISTRIBUIDOS. Introducción Hardware Software Aspectos de diseño

TEMA 9. SISTEMAS OPERATIVOS DISTRIBUIDOS

Programación Concurrente Recopilación de teoría referente a la materia

Usando el Sistema Operativo

Programación Concurrente y Paralela. Unidad 1 Introducción

Sistemas Operativos. Procesos

Procesos y Threads Procesos y Threads. Concurrencia Concurrencia Ventajas Ventajas. Rendimiento Rendimiento (paralelismo) (paralelismo)

Facultad de Ingeniería Industrial y de Sistemas v1.0 MA781U PROCESOS DISTRIBUIDOS

Sistemas Operativos Distribuidos. Sistemas Operativos Una visión aplicada

UNIVERSIDAD DE GUADALAJARA

Diseño de Sistemas Distribuidos Máster en Ciencia y Tecnología Informática Curso Presentación e introducción

Ingeniería en computación Tipos de sistemas operativos

PROCESAMIENTO DISTRIBUIDO

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA

Sistemas Distribuidos. Prog. Distribuida bajo Internet

PROCESOS E HILOS - Hilo

TEMA 1. Introducción a las arquitecturas distribuidas

SISTEMAS OPERATIVOS Manejo de procesos

Sistemas operativos: una visión aplicada. Capítulo 5 Comunicación y sincronización de procesos

Guillermo Román Díez

Introducción a los sistemas distribuidos. Jorge Iván Meza Martínez

Sistemas Operativos Distribuidos

6.1 Base De Datos Centralizada

Tema 2. Administración de procesos

Tema 1: Introducción a los Sistemas Distribuidos. Sistemas Distribuidos Marcos López Sanz [Curso ]

Introduccion a Sistemas Operativos. Ej: Linux

Sistemas Operativos Distribuidos

Sistemas Distribuidos Introducción. Rodrigo Santamaría

Sistemas Distribuidos.

Arquitecturas cliente/servidor

Lenguajes de Programación

Ingeniería en Computación

Fundamentos de los Sistemas Operativos. Tema 2. Procesos José Miguel Santos Alexis Quesada Francisco Santana

Programación de Multitareas utilizando Hilos

MULTIPROCESADORES TIPOS DE PARALELISMO

Taller de Programación Paralela

Tipos de Diseño. Ing. Elizabeth Guerrero V.

Introducción a los Servicios Web

Sistemas Operativos. Introducción. Tema 6

Sistemas Informáticos Industriales

INSTITUTO POLITÉCNICO NACIONAL SECRETARÍA ACADÉMICA DIRECCIÓN DE EDUCACIÓN SUPERIOR PROGRAMA SINTÉTICO

Conceptos generales de sistemas distribuidos

Tema III. Multihilo. Desarrollo de Aplicaciones para Internet Curso 12 13

Cilk. Un entorno de programación paralela. Tomás Muñoz Rodríguez < > 17 de noviembre de 2011

Clases 02 & 03: Revisión de conceptos

Contenido 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS PROCESOS Prólogo...

SISTEMAS OPERATIVOS: PROCESOS. Planificación de procesos

Hilos Secciones Stallings:

SISTEMAS OPERATIVOS Introducción. Amilcar Meneses Viveros

de Gran Canaria Centro de Tecnología Médica Programación Concurrente

Concurrencia de Procesos

Tema 4: Gestión de Procesos

Sistemas Distribuidos. Soporte de Sistemas Operativos

Programación Concurrente

Sistemas Distribuidos: Migración de Procesos

Fecha de entrega: Miércoles 4 de Septiembre. Campus: Villahermosa. Carrera : Ingeniería en Sistemas Compuacionales. Nombre del maestro: Carlos Castro

Con estas consideraciones, Flynn clasifica los sistemas en cuatro categorías:

Modelos de Sistemas Distribuidos

Taxonomía de las arquitecturas

TEMA 1. FUNDAMENTOS DE LA CONCURRENCIA. Ingeniería en Informática Curso

Contenidos. Contenidos. Bibliografía. Paralelismo vs concurrencia. Qué es la concurrencia? Ingeniería en Informática Curso

Sistemas Operativos Practica 1: procesos y concurrencia.

TAREA 1. INTRODUCCIÓN A LOS SISTEMAS OPERATIVOS.

PROGRAMACIÓN DISTRIBUIDA

Diseño de Sistemas Operativos. Capítulo 10 Introducción a los Sistemas Operativos Distribuidos

Procesos Definición y Estados

Programación Concurrente y distribuida

CAPITULO 12: SISTEMAS DE FICHEROS DISTRIBUIDOS Un sistema bien diseñado permite el acceso a un servidor de ficheros (remoto) con eficiencia y

Sistemas Operativos Distribuidos

Evolución del software y su situación actual

PROGRAMACIÓN PARALELA. Modelos de programación paralela Paradigmas de programación paralela

Necesidad de Protección

Instrumentación n / Ing. Quirino Jimenez D.

Arquitecturas: Clusters. Edgar Valderrama Lucio Mederos

Asignaturas antecedentes y subsecuentes

Participantes: Avila Aida Betancourt Sioly Briceño Susana Rojas Alejandro

Universidad de Cantabria

La secuencia de referencias a páginas para el proceso B es:

Sistemas Operativos. Dr. Luis Gerardo de la Fraga. Departamento de Computación Cinvestav

Aplicaciones Concurrentes

Escalabilidad: El desempeño del software y hardware debe ser eficiente desde un grupo pequeño de procesadores a un grupo muy grande de procesadores.

Diseño arquitectónico 1ª edición (2002)

Computación 1. Roles en la interconexión

Esta asignatura apoyará al alumno en la consecución de las siguientes competencias:

Procesos y Threads Procesos y Threads. Rendimiento Rendimiento (paralelismo) (paralelismo) Productividad Productividad

Concurrencia. Programación Concurrente Procesos Comunicación entre Procesos (IPC) con espera ocupada.

Redes de Altas Prestaciones

Universidad Autónoma de Baja California Facultad de Ciencias Administrativas Unidad Mexicali

TEMA 2: PROGRAMACIÓN PARALELA (I)

Sistemas Operativos. Estructura de los sistemas operativos

Problemas que resuelve un S.O. (2)

RECURSOS COMPARTIDOS ENTRE DIFERENTES SISTEMAS OPERATIVOS. Activar y desactivar Uso compartido simple de archivos

BASE DE DATOS DISTRIBUIDOS

UNIVERSIDAD DE GUADALAJARA

Otro componente fundamental del ordenador es su memoria principal

FUNDAMENTOS DE SISTEMAS OPERATIVOS

BROKER Publicador Suscriptor. Jonnathan Corredor Lorena Arrieta Alejandro Mosquera

Transcripción:

Sistemas Paralelos y Distribuidos Facultad de Cs. de la Computación Juan Carlos Conde Ramírez Distributed Computing

Contenido 1 Características 2 Buenas prácticas 3 Procesos y Tareas 4 Procesos en UNIX 1 / 34

Contenido 1 Características 2 Buenas prácticas 3 Procesos y Tareas 4 Procesos en UNIX 2 / 34

Introducción Como se recordará, el uso de memoria compartida es la base para distinguir un sistema paralelo de un sistema distribuido. Es decir, un sistema distribuidor se caracteriza por la ausencia de memoria compartida. Por lo tanto, en un sistema distribuido es imposible conocer el estado global del sistema (para cualquier procesador). En consecuencia es complicado observar cualquier propiedad global del sistema. 3 / 34

Acoplamiento I Tanto un sistema distribuido como un sistema paralelo pueden ser fuertemente acoplado o débilmente acoplado. Esto depende de la manera en que colaboran los múltiples procesadores. 4 / 34

Acoplamiento II Esto hace importante tener que hacer las siguientes consideraciones: La ausencia de un reloj compartido deriva en un sistema débilmente acoplado. Lógicamente para un sistema geográcamente distribuido es mucho más difícil, por no decir imposible, sincronizar los relojes de diferentes procesadores. 5 / 34

Acoplamiento III El retraso o delay de la comunicación entre procesadores es la razón principal de que sea imposible sincronizar los relojes de los procesadores que integran un sistema distribuido. En base a lo anterior, es comprensible que se tenga que prescindir del uso de relojes físicos para la sincronización de sistemas distribuidos. Pese a que en un sistema paralelo es posible simular un reloj compartido, rara vez es buena idea diseñar un sistema basado en una arquitectura fuertemente acoplada. 6 / 34

Acoplamiento IV Debido a la perdida de rendimiento durante la sincronización, elegir una arquitectura débilmente acoplada es una mejor opción. Por lo tanto, asumiremos que los sistemas con los que trataremos a partir de ahora son débilmente acoplados. 7 / 34

Sincronización Def. Sincronización (del griego (syn) -> unido y (chrónos) -> tiempo), describe el ajuste temporal de eventos. Se habla de sincronización cuando determinados fenómenos ocurran en un orden predenido o a la vez. 8 / 34

Clasicación Los sistemas distribuidos pueden ser clasicados como: Sistemas Síncronos Sistemas Asíncronos 9 / 34

Sistemas Asíncronos I Un sistema distribuido es asíncrono si no existe límite superior en el tiempo de comunicación de los mensajes. La asincronía conduce hacía las soluciones más generales para varios problemas. Sin embargo, las cosas se tornan difíciles en sistemas asíncronos cuando los procesadores o las conexiones fallan. 10 / 34

Sistemas Asíncronos II En un sistema distribuido asíncrono es imposible distinguir entre un procesador lento y uno que ha fallado. Esto conduce a complicaciones en el desarrollo de algoritmos para consenso, elección y otros problemas importantes del cómputo distribuido. 11 / 34

Contenido 1 Características 2 Buenas prácticas 3 Procesos y Tareas 4 Procesos en UNIX 12 / 34

Conceptos Los resultados de muchos sistemas paralelos y distribuidos han demostrado que su diseño debe considerar principalmente cuatro propiedades: 1. Tolerancia a fallos 2. Transparencia 3. Flexibilidad 4. Escalabilidad 13 / 34

Tolerancia a fallos El software debe de enmascara uno o más componentes del sistema incluyendo: - procesadores - memoria - conexiones de red. Generalmente esto requiere redundancia, la cual puede ser costosa dependiendo del grado de tolerancia. Por lo tanto, se requiere de un análisis costo-benecio para determinar un nivel apropiado de tolerancia a fallos. 14 / 34

Transparencia I Para que un sistema sea tan amigable como sea posible, se requiere que el usuario no tenga que tratar con detalles innecesarios. Por ejemplo: en un sistema distribuido heterogéneo, la diferencia en la representación interna de los datos se oculta para el usuario, esto corresponde a transparencia de acceso. 15 / 34

Transparencia II Para que un usuario pueda utilizar un recurso: No se requiere que el usuario sepa donde está localizado -Transparencia de localización. No se requiere que el usuario sepa si está replicado -Transparencia de replicación. No se requiere que el usuario sepa si está compartido -Transparencia de concurrencia. No se requiere que el usuario sepa si está almacenado en memoria volátil o en disco duro -Transparencia de persistencia. 16 / 34

Flexibilidad La Flexibilidad de un sistema radica en la facilidad para interactuar con otros servicios y sistemas. Para lograr una una buena interacción se requiere que el sistema adopte un conjunto jo de reglas, preferiblemente un estándar. Esto se puede facilitar a través de: 1. Una Lenguaje de Denición de Interfaz (IDL) que especica los servicios proporcionados por el sistema. 2. Separar la conguración (o política) del mecanismo. 17 / 34

IDL: Interface Description Language También llamado lenguaje de denición de interfaz es un lenguaje informático utilizado para describir la interfaz de componentes del software. Describe una interfaz en un lenguaje neutral, que permite la comunicación entre componentes de software desarrollados en diferentes lenguajes de programación y para diferentes plataformas, como por ejemplo entre componentes escritos en C++ y otros escritas en Java. Son utilizadas con frecuencia en software con llamadas a procedimientos remotos (RPC, Remote Procedure Call). IDL ofrece un puente entre dos sistemas diferentes. Algunos lenguajes de descripción o de denición de interfaz son: IDL specication language, el IDL original. Microsoft Interface Denition Language (MIDL). Open Service Interface Denitions. Platform-Independent Component Modeling Language. WSDL, lenguaje de descripción de servicios web. 18 / 34

Escalabilidad La Escalabilidad es una propiedad importante si se piensa en rendimiento del sistema cuando el número de usuarios o recursos se incremente. Por lo general, un sistema puede ser completamente descentralizado; usando algoritmos distribuidos, como parcialmente descentralizado; usando una jerarquía de servidores. 19 / 34

Contenido 1 Características 2 Buenas prácticas 3 Procesos y Tareas 4 Procesos en UNIX 20 / 34

Origenes Se puede decir que los problemas de Concurrencia surgen incluso en computadoras con un sólo CPU, ya que el sistema puede estar organizado como una colección de procesos que cooperan entre sí. De hecho, los tópicos de Sincronización e Interbloqueo (deadlock) tienen sus raíces en el desarrollo de los primeros Sistemas Operativos. No obstante, antes de profundizar en la construcción de la programación concurrente es necesario comprender la diferencia entre programa y proceso. 21 / 34

Procesos I Programa de computadora.- Se trata de un conjunto de instrucciones escritas en un lenguaje de alto nivel o en lenguaje de máquina. Proceso.- Se obtiene al ejecutar un programa y es entonces que es posible obtener uno o más procesos. programa secuencial = un proceso programa concurrente = múltiples procesos 22 / 34

Procesos II Un proceso consiste de tres segmentos en memoria: 1. Código 2. Datos 3. Pila de ejecución. El CÓDIGO es la máquina de instrucciones. Los DATOS corresponden a la memoria ocupada por variables globales y memoria asignada en tiempo de ejecución (heap) usada por el programa. La PILA se compone de variables locales y registros de activación para las llamadas a función. 23 / 34

Procesos III Dado que cada proceso tiene su propia pila, cuando varios procesos comparten el espacio de direcciones (memoria), o sea código y datos, se conocen como procesos ligeros o hilos. 24 / 34

Procesos IV Cuando varios procesos tienen su propio código y sus propios datos se conocen como procesos pesados o simplemente procesos. En este caso, los procesos pesados pueden compartir datos a través de archivos o enviando mensajes explícitos a cada otro. Lenguaje Cualquier lenguaje de programación que soporte concurrencia debe tener una forma de especicar: La estructura de un proceso. La comunicación entre varios procesos. La sincronización de cada proceso. 25 / 34

Contenido 1 Características 2 Buenas prácticas 3 Procesos y Tareas 4 Procesos en UNIX 26 / 34

Organización Durante el curso se estudiaran las formas más populares para que un programa especique la estructura de un proceso o la creación de nuevos procesos. Un caso fundamental es la creación de procesos en sistemas basados en UNIX. Los procesos son organizados en forma de un árbol de procesos donde cada proceso se identica con un Identicador de Proceso que es único (PID). UNIX proporciona llamadas a sistema de tipo: bifurcación (fork) para la creación de procesos ligeros. de espera (wait) para la sincronización de procesos ligeros. 27 / 34

Llamada a sistema fork Cuando un proceso realiza un llamado de tipo fork se crea un proceso hijo con una copia del espacio de direcciones del proceso padre. La única diferencia entre el proceso padre y el hijo es el valor de retorno que se obtiene a partir del código para el fork. El proceso padre obtiene el PID del proceso hijo así como el código de retorno, y el proceso hijo se identica con el valor 0 como se muestra en el siguiente código. 28 / 34

Llamadas a sistema fork ejemplo pid = fork(); if( pid == 0 ) { // child process cout child process; } else { // parent process cout parent process; } 29 / 34

Llamada a sistema wait La llamada a wait es usada por el proceso padre para esperar la nalización del proceso hijo. Un proceso termina cuando se ejecuta la última instrucción del código o cuando se hace una llamada explícita a la función exit perteneciente al sistema. Cuando un proceso hijo termina, el proceso padre despierta si estaba esperando, y el PID del proceso hijo es retornado por la llamada wait. De esta forma el proceso padre puede determinar cuál de sus hijos ha terminado. 30 / 34

Lanzamiento paralelo de procesos I Otro tipo de programación para lanzar tareas paralelas es posible a través de la sentencias cobegin-coend (también llamadas parbegin-parend). Su sintaxis es como sigue: cobegin S 1 S 2 coend Esta tipo de construcción signica que S 1 y S 2 deben ejecutarse en paralelo. Además si alguno de los procesos termina antes, este debe esperar a que termine el otro. 31 / 34

Lanzamiento paralelo de procesos II Combinando las sentencias cobegin-coend con la secuenciación u operador de series ';' es posible crear cualquier cantidad de tareas con estructura en serieparalela. S 0; cobegin S 1 S 2 coend; S 3 se comienza con un proceso que ejecuta S 0. Cuando S 0 termina se tienen dos procesos (o hilos) S 1 y S 2 que se ejecutan en paralelo. Cuando ambos procesos terminan, sólo resta ejecutar S 3. 32 / 34

ACTIVIDAD: Ejercicios 1. Dar las ventajas y desventajas de un modelo de programación paralela contra un modelo de sistema distribuido (basado en mensajes). 2. Codica una clase en Java que permita la búsqueda paralela en un arreglo de enteros. Se proporciona el siguiente método estático: public static int parallelsearch( int x, int A[], int numthreads ) {... } Éste método crea tantos hilos como especiqué el parámetro numthreads, divide el arreglo A entre el número de hilos, se le asigna una parte del arreglo a cada hilo para que busque x de forma secuencial. Si algún hilo encuentra x, entonces éste retorna un índice i tal que A[i] = x. En otro caso, el método retorna -1. * Presentar tarea escrita a mano en la libreta y en limpio. ** La comprobación del código en JAVA deberá presentarse en computadora. 33 / 34

El único lugar en el que Éxito viene antes que Trabajo es en el diccionario [Vidal Sassoon] Juan Carlos Conde Ramírez juanc.conde@cs.buap.mx 34 / 34