1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o...

27
1 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

Transcript of 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o...

Page 1: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

1

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

Page 2: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

2

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

Page 3: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

3

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

Page 4: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

4

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

Page 5: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

5

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

Page 6: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

6

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

Page 7: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

7

Intercambio de datos en pares (“peers”) con AMP

Sistemas Distribuidos 2003 - Clase 1

Page 8: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

8

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);}

Page 9: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

9

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

Page 10: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

10

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énticosINT 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

Page 11: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

11

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

Page 12: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

12

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); send values[1] (minimo, maximo);}

Sistemas Distribuidos 2003 - Clase 1

Page 13: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

13

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 receive values[i] (minimo, maximo); IF (i < n-1) send values[i+1] (minimo, maximo);}

Sistemas Distribuidos 2003 - Clase 1

Page 14: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

14

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.

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

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.

Page 15: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

15

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]; FOR [i=0 to n-1] { receive values (results[i]); #Hacer cálculos consumidor }}

Sistemas Distribuidos 2003 - Clase 1

Page 16: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

16

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

Page 17: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

17

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

Page 18: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

18

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

Page 19: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

19

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 canalunoB? canaluno(resultado); #el proceso B recibe por canaluno

Sistemas Distribuidos 2003 - Clase 1

Page 20: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

20

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

Page 21: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

21

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); od}

Client se comunica con GCD ejecutando:... GCD ! args(v1, v2); GCD ? result(r) ...

Sistemas Distribuidos 2003 - Clase 1

Page 22: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

22

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

Page 23: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

23

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

Page 24: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

24

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

Page 25: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

25

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; FI}

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

Page 26: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

26

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

Page 27: 1 Dualidad entre monitores y Pasaje de Mensajes para manejar recursos. La eficiencia de monitores o pasaje de mensajes depende de la arquitectura física.

27

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