Dualidad entre monitores y Pasaje de Mensajes para manejar recursos.

Slides:



Advertisements
Presentaciones similares
Arreglos Unidimensionales y Bidimensionales ESTRUCTURAS DE DATOS I
Advertisements

Tabla de Contenido Concurrencia.
Definición En un sistema de base de datos distribuida, los datos se almacenan en varios computadores. Los computadores de un sistema distribuido se comunican.
Internet y tecnologías web
1.3. PROGRAMACION PARALELA
I.T.E.S.R.C. Romina Tamez Andrea Martínez Ma. De Lourdes Solís
Base de Datos Distribuidas FUNDAMENTOS DE BASES DE DATOS DISTRIBUIDAS
PROGRAMACIÓN PARALELA Tema 5: Análisis de algoritmos paralelos
Ana Lucia Farfan Estrada. Angela Aybar Rengifo.
Desarrollo de Aplicaciones para Internet
Concepto de programa. Directorio Concepto de programa. Analisis del problema. Resolucion del problema. Desarroollo de un programa. Partes constitutivas.
Tipo de Dato Abstracto Tipos de datos:
FORTRAN 90 arreglos.
PROGRAMACION DE ESTRUCTURAS DE DATOS
Qué vimos en la clase pasada??
Programación Distribuida. Pasaje de mensajes sincrónicos.(SMP)
Mecanismos de comunicación y sincronización entre procesos.
Conceptos de Concurrencia
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Algoritmos y Estructuras de Datos
Programación en Lenguaje Ensamblador.
Johanna Lizeth Rodríguez Lorena Fda. Chávarro Ramos
Funciones y procedimientos
CI TEORIA semana 8 Subprogramas o funciones Definición de funciones.
Material de apoyo Unidad 2 Estructura de datos
Almacenamiento y Recuperación de la Información 2do Semestre 2005 Wenceslao Palma M.
Sistemas Operativos Distribuidos Plataforma Cliente/Servidor
TÉCNICO EN PROGRAMACIÓN DE SOFTWARE Instructor: Ingeniero Adrián Guerrero Taborda
Al término de la clase, el alumno reconoce las ventajas de usar JAVASCRIPT para un proyecto web.
HILOS Y COMUNICACIÓN ENTRE PROCESOS
PROGRAMACION II.  Es un conjunto de datos no necesariamente del mismo tipo, los cuales se podrán manipular o realizar cualquier operación sobre cada.
Semana 5 Subprogramas..
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA OCHO THREADS.
Concurrencia: Exclusión Mútua y Sincronización
PROGRAMACIÓN PARALELA Tema 4: Metodología de la programación
Unidad III Administración de procesos
ESTRUCTURAS DE DATOS I Conocer, comprender y analizar algunos de los principales tipos de estructuras de datos.
Archivos.
POP3 UCLV Mapas Conceptuales para la enseñanza de Redes de Computadoras.
Java. Java nació el año 1991, por un par de ingenieros de la Sun Microsystems.
Communicating Sequential Processes Presentación realizada por : Alberto Calixto Simon Ivan Olmos Pineda.
ESTRUCTURA DE DATOS EN JAVA
Sistemas Concurrentes: Paso de mensajes
(Organización y Manejo de Archivos)
Soporte HW para Administración de Memoria Cecilia Hernández
SISTEMAS OPERATIVOS.
Material de apoyo Unidad 4 Estructura de datos
 El acceso concurrente a datos compartidos puede dar pie a inconsistencia de datos  Mantener la consistencia de los datos requiere mecanismos para asegurar.
Sincronización de Procesos
- 1 - Sistema Embebidos: Propiedades de los Lenguajes y SDL Agustín J. González 1s06 Se ha tomado como base el material generado por Peter Marwedel de.
CONCEPTOS FUNDAMENTALES DEL NIVEL DEL SISTEMA OPERATIVO
Redes de Area Local, LAN Una red de área local es una red de datos de alta velocidad que cubre un área geográfica relativamente pequeña. Típicamente conecta.
- 1 - Sistema Embebidos: Propiedades de los Lenguajes y SDL Agustín J. González 1s07 Se ha tomado como base el material generado por Peter Marwedel de.
Programación Distribuida
Punteros Recomendado: 1. Nivelación Funciones
Objetivo Mostrar los fundamentos de la programación a través de ejemplos y prácticas utilizadas cotidianamente en el desarrollo de aplicaciones.
LABORATORIO DE ESTRUCTURA DE COMPUTADORES II Desarrollo de aplicación Cliente-Servidor.
Teoría de Sistemas Operativos Sistemas distribuidos.
Programación Básica con NQC Patricio A. Castillo 12/04/2008.
Unidad 2 – Gestión de Procesos
Sistemas distribuidos Expositores Carlos Javier. ¿Que es un sistema distribuido? ¿Que es un sistema distribuido?
“variables , sentencia if y bucles”
BASE DE DATOS DISTRIBUIDAS
Lic. Carla Aguirre Montalvo
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
EL TIPO DE DATO LOGICO y constantes.
Bases de Datos y Sistemas de Gestión de Bases Relacionales.
ESTRUCTURAS DE DATOS “Conceptualización de estructuras de datos” Por: Eduardo Robayo.
3.6 Manejo de E/S Estructuras En la creación de soluciones para algunos problemas surge la necesidad de agrupar datos de diferente tipo o de manejar datos.
Transcripción de la presentación:

Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física de soporte. Con memoria compartida conviene la invocación a procedimientos y la operación sobre variables de condición. Con arquitecturas físicamente distribuida tienden a ser más eficientes los mecanismos de pasaje de mensajes. En general los sistemas operativos y los lenguajes de programación tienden a facilitar la utilización de ambos mecanismos. Sistemas Distribuidos 2003 - Clase 1

File Servers: Un ejemplo de Cliente-Servidor con AMP Los procesos “cliente” pueden acceder a archivos externos, almacenados en disco. Deben hacer un OPEN del archivo; si el archivo se puede abrir pueden hacer una serie de pedidos de READ o WRITE y luego pueden cerrar (CLOSE) el archivo. Si tenemos N archivos, consideraremos 1 File Server por archivo.Los procesos server serán idénticos, y cualquiera de ellos que esté libre podrá atender un requerimiento de OPEN. Todos los clientes podrán pedir un OPEN por un canal global (qué argumentos serán necesarios??) y recibirán respuesta de un servidor dado por un canal propio. Por qué?? Sistemas Distribuidos 2003 - Clase 1

File Servers: Un ejemplo de Cliente-Servidor con AMP . type kind = enum(READ,WRITE,CLOSE) chan open (STRING fname; INT clientid); chan access[n] (INT kind, otros tipos de argumentos); chan open_reply[m](INT serverId); #Nro. Server o Cod. Error chan access_reply[m] (tipos resultado); #datos, flags de error Client [j=0 to m-1] { INT serverId; otras declaraciones; send open (“Pirulo.doc”, j); # trata de abrir el archivo receive open_reply[j] (serverId); # Nro. de servidor send access[serverid](argumentos de pedido); receive access_reply[j](resultados); ..... } Sistemas Distribuidos 2003 - Clase 1

File Servers: Un ejemplo de Cliente-Servidor con AMP . Process File_Server[i=0 to n-1] { STRING fname; INT clientId; Kind k; otras declaraciones; BOOL more= false; WHILE (true) { receive open(fname,clientid); OPEN FILE fname ; IF OK THEN { send open_reply[clientid](i); more := true; WHILE more { receive access[i](k,args); IF k == READ procesa pedido de lectura; ELSE IF k == WRITE procesa pedido de escritura; ELSE # k== CLOSE procesa el cierre; more=false; send access_reply[clientId] (results); } Sistemas Distribuidos 2003 - Clase 1

File Servers: Un ejemplo de Cliente-Servidor con AMP . Este ejemplo de interacción entre clientes y servidores se denomina continuidad conversacional. (del OPEN al CLOSE). Si el lenguaje soportara creación dinámica de procesos y canales, el número N de file servers puede adaptarse a los requerimientos del sistema real. Otro esquema de solución sería un file server por disco. Analicemos conceptualmente las diferencias... Otra solución: Sun Netwok File System: OPEN ===> adquirir un descriptor completo del file. Las operaciones sucesivas son RPC trasmitiendo el descriptor. (ventajas y desventajas) Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos en pares (“peers”) con AMP Nos planteamos un ejemplo donde los procesadores distribuídos están conectados por tres modelos de arquitectura: centralizado, simétrico y en anillo circular. El problema que planteamos es muy simple: cada proceso tiene un dato local V y los N procesos deben saber cual es el menor y cual el mayor de los valores en la red. La arquitectura centralizada se presta para una solución donde todos envían su dato local V al procesador central y éste ordena los N datos y reenvía la información del mayor y menor valor a todos los procesos. La solución centralizada requiere 2(N-1) mensajes. Si p[0] dispone de una primitiva de broadcast este número se reduce a N mensajes. Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos en pares (“peers”) con AMP Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos en pares con AMP: solución centralizada Chan values(INT), results[n] (INT minimo, INT maximo); Process P[0] { #Proceso coordinador. v ya está inicializado. INT v; INT new, minimo = v, máximo=v; FOR [i=1 to n-1] { receive values (new); IF (new < minimo) minimo = new; IF (new > maximo) maximo = new; } FOR [i=1 to n-1] send results [i] (minimo, maximo); Process P[i=1 to n-1] { #Proceso cliente. v ya está inicializado. INT v; INT minimo, máximo; send values (v); receive results [i] (minimo, maximo); }

Intercambio de datos en pares con AMP: solución simétrica En la arquitectura simétrica o “full conected” existe un canal entre cada par de procesos. Esto da la posibilidad de que los mensajes y el procesamiento puedan ser paralelos. Cada proceso trasmite su dato local v a los n-1 restantes procesos. Luego recibe y procesa los n-1 datos que le faltan, de modo que en paralelo toda la arquitectura está calculando el mínimo y el máximo y toda la arquitectura tiene acceso a los n datos. El resultado es que tenemos n(n-1) mensajes en el sistema. Si disponemos de una primitiva de broadcast, serán nuevamente n mensajes. Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos entre pares. Solución simétrica con AMP. Chan values(INT); Process P[i=0 to n-1] { # Todos los procesos son idénticos INT v; INT new, minimo = v, máximo=v; #estado inicial, v inicializado FOR [k=0 to n-1 st k <> i ] #envío del dato local send values[k] (v); FOR [k=0 to n-1 st k <> i ] { #recibo y proceso los datos remotos receive values[k] (new); IF (new < minimo) minimo = new; IF (new > maximo) maximo = new; } Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos en pares con AMP: solución con un anillo circular Un tercer modo de organizar la solución es tener un anillo donde P[i] recibe mensajes de su predecesor y envía mensajes a su sucesor. P[n-1] tiene como sucesor a P[0] Este esquema de solución tiene dos etapas. En la primera cada proceso recibe dos valores y los compara con su valor local, trasmitiendo un máximo local y un mínimo local a su sucesor. En la segunda etapa todos deben recibir la circulación del máximo y el mínimo global. P[0] deberá ser algo diferente para “arrancar” el procesamiento. Se requerirán 2 (n-1) mensajes. Notar que si bien el número de mensajes es lineal (igual que en la solución centralizada) los tiempos pueden ser muy diferentes. Por qué??? Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos entre pares. Solución en anillo con AMP. Chan values[n] (INT minimo, INT maximo); Process P[0] { # Proceso que inicia los intercambios. INT v; INT minimo = v, máximo=v; #Enviar v al proceso P[1] send values[1] (minimo, maximo); # Recibir los valores minimo y maximo globales de P[n-1] y pasarlos receive values[0] (minimo, maximo); } Sistemas Distribuidos 2003 - Clase 1

Intercambio de datos entre pares. Solución en anillo con AMP. Process P[i=1 to n-1] { # Procesos del anillo. INT v; INT minimo, máximo; # Recibe los valores minimo y maximo hasta P[i-1] receive values[i] (minimo, maximo); IF (v < minimo) minimo = v; IF (v > maximo) maximo = v; # Enviar el minimo y maximo al proceso i+1 send values[i+1 MOD n] (minimo, maximo); #Esperar el minimo y maximo global IF (i < n-1) send values[i+1] (minimo, maximo); } Sistemas Distribuidos 2003 - Clase 1

Programación Distribuida. Pasaje de mensajes sincrónicos.(SMP) La primitiva de trasmisión sync_send es bloqueante. Es decir el trasmisor queda esperando que el mensaje sea recibido. La cola de mensajes asociada con un send sobre un canal se reduce a 1 mensaje. Esto significa menor memoria. Naturalmente el grado de concurrencia se reduce respecto de la sincronización por mensajes asincrónicos. Como contrapartida los casos de falla y recuperación de errores son más fáciles de manejar. Si bien send y sync_send son similares (en algunos casos intercambiables) la semántica es diferente y las posibilidades de deadlock mayores en comunicación sincrónica. Sistemas Distribuidos 2003 - Clase 1

Pasaje de mensajes sincrónicos. Chan values(INT); Process Producer { INT data[n]; FOR [i=0 to n-1] { #Hacer cálculos productor sync_send values (data[i]); } Process Consumer { INT results[n]; receive values (results[i]); #Hacer cálculos consumidor Sistemas Distribuidos 2003 - Clase 1

Pasaje de mensajes sincrónicos. Comentarios. Si los cálculos del productor se realizarán mucho más rápido que los del consumidor en las primeras n1 operaciones y luego se realizaran mucho más lento durante otras n1 interacciones. Con el esquema sincrónico los pares send/receive se completaran asumiendo la demora del proceso que más tiempo consuma. Si la relación de tiempo fuera 10-1 esto significaría multiplicar por 10 los tiempos totales. En cambio la misma solución con mensajes asincrónicos, al principio el productor es más rápido y sus mensajes se encolan. Luego el consumidor es más rápido y “descuenta” tiempo consumiendo la cola de mensajes. --> Mayor concurrencia en AMP. Sistemas Distribuidos 2003 - Clase 1

Pasaje de mensajes sincrónicos. El tema del deadlock. Supongamos dos procesos que intercambian valores: chan in1(INT), in2(INT); Process P1 { INT value1 = 1, value2; sync_send in2(value1); receive in1 (value2); } Process P2 { INT value1, value2=2; sync_send in1(value2); receive in2 (value1); Con mensajes sincrónicos esta solución entra en deadlock. Por qué?? En cambio con AMP esta resolución es perfectamente posible. Sistemas Distribuidos 2003 - Clase 1

Mensajes sincrónicos: el lenguaje CSP de Hoare. CSP (Hoare 1978) fue uno de los desarrollos fundamentales en Programación Concurrente. Muchos lenguajes reales (OCCAM, ADA, SR) se basan en CSP. La idea básica de Hoare fue la de comunicación guardada: es decir pasaje de mensajes con waiting selectivo. Canal: link directo entre dos procesos en lugar de mailbox global. Son half-duplex y nominados. Sentencias de Entrada y Salida ( ? ! ) : único medio por el cual los procesos se comunican. Efecto de la comunicación  sentencia de asignación distribuida. Sistemas Distribuidos 2003 - Clase 1

El lenguaje CSP de Hoare. Primeros ejemplos. Formas generales de sentencias de comunicación: Destino ! port(e1, ..., en); Fuente ? port(x1, ..., xn); Destino y Fuente nombran un proceso. port es un canal de comunicación simple en el proceso destino o un elemento de un arreglo de ports en el proceso destino. Los ports son usados (declarados) para distinguir entre distintas clases de mensajes que un proceso podría recibir. Dos procesos se comunican cuando ejecutan sentencias de comunicación que hacen matching. A! canaluno(dato); #el proceso A envia por canaluno B? canaluno(resultado); #el proceso B recibe por canaluno Sistemas Distribuidos 2003 - Clase 1

El lenguaje CSP de Hoare. Primeros ejemplos. El nombre de los ports sirve para distinguir los tipos de mensajes que maneja un proceso. Si hay sólo un tipo de mensajes, port se puede omitir. Asimismo si hay un solo dato en juego, los paréntesis se pueden omitir. Un proceso filtro que copia caracteres recibidos del proceso West al proceso East: Process Copy { CHAR c; do true  West ? c; East ! c ; od } Las operaciones de comunicación (? ! ) pueden ser guardadas, es decir hacer un AWAIT hasta que una condición sea verdadera. Sistemas Distribuidos 2003 - Clase 1

El lenguaje CSP de Hoare. Primeros ejemplos. Server que calcula el Máximo Común Divisor de dos enteros con algoritmo de Euclides: GCD espera recibir entrada en su port args desde un único cliente. Envía la respuesta al port result del cliente. Process GCD { INT Id, x, y; do true  Client[*] ? args(Id, x,y); #Lo que sigue se repite hasta que x==y do x > y  x := x - y;  x < y  y := y - x; od Client[Id] ! result(x); } Client se comunica con GCD ejecutando: ... GCD ! args(v1, v2); GCD ? result(r) ... Sistemas Distribuidos 2003 - Clase 1

CSP: comunicación guardada. Un proceso puede tener que realizar una comunicación sólo si se da una condición: IF B1; comunicación1----> S1;  B2; comunicación2----> S2; FI Asimismo en el ejemplo del COPY, si manejamos un buffer de tamaño 2, el proceso que copia puede estar recibiendo un segundo caráter de West o enviando un carácter a East. Process Copy2 { CHAR c1, c2; West ? c1; DO West ? C2--> East ! c1 ; c1=c2;  East ! c1 ; West? C1; od } Sistemas Distribuidos 2003 - Clase 1

Generalización del COPY en CSP para un buffer limitado.. Process Copy { CHAR buffer[80]; INT front = 0, rear = 0, count = 0 do count < 80; West ? buffer[rear]  count = count + 1; rear = (rear + 1)MOD 80;  count > 0; East ! buffer[front]  count := count - 1; front := (front + 1) MOD 80; od } Notar que: con AMP, procesos como West e East ejecutan a su propia velocidad pues hay buffering implícito. con SMP, es necesario programar un proceso adicional para implementar buffering si es necesario. Sistemas Distribuidos 2003 - Clase 1

Proceso de asignación de recursos en CSP. Process Allocator { INT avail = MaxUnits; SET units = valores iniciales; INT index, unitid; DO avail >0; client[*] ? acquire(index)---> avail = avail -1; remove (units, unitid); client[index] ! reply(unitid);  client[*] ? release(index, unitid)---> avail=avail +1; insert (units, unitid); OD } La solución sincrónica utiliza la definición de múltiples ports de CSP y resulta muy simple y clara. Sistemas Distribuidos 2003 - Clase 1

Intercambio de valores entre dos procesos en CSP. Supongamos dos procesos que intercambian valores: Process P1 { INT value1 = 1, value2; IF P2 ! value1 ---> P2 ? value2;  P2 ? value2 ---> P2 ! value1; FI } Process P2 { INT value1 , value2=2; IF P1 ! value2 ---> P1 ? value1;  P1 ? value1 ---> P1 ! value2; Esta solución simétrica NO tiene deadlock porque el no determinismo en ambos procesos hace que se acoplen las comunicaciones correctamente. Sistemas Distribuidos 2003 - Clase 1

CSP: Generación de números primos: la criba de Eratóstenes. Idea: generar todos los primos entre 2 y n 2 3 4 5 6 7 ... n Comenzando con el primer número, 2, recorremos la lista y borramos los múltiplos de ese número. Si n es impar: 2 3 5 7 ... n Pasamos al próximo número, 3, y borramos sus múltiplos. Si seguimos hasta que todo número fue considerado, los que quedan son todos los primos entre 2 y n. Sistemas Distribuidos 2003 - Clase 1

La criba de Eratóstenes: solución paralela en CSP. Process Sieve[i = 2 TO L] { INT p, next; Sieve[i-1] ? p # p es primo DO Sieve[i-1] ? Next ---> #recibe el proximo candidato IF (next MOD p) <> 0 ---> #podría ser primo Sieve[i+1] ! Next; #entonces lo pasa FI OD } El número total L de procesos Sieve debe ser lo suficientemente grande para garantizar que todos los primos hasta n se generan. Sistemas Distribuidos 2003 - Clase 1