Sie sind auf Seite 1von 20

+

Algoritmo de Ricart y
Agrawala
Sistemas Distribuidos
Rodrigo Santamara
+ Objetivo

Implementar un conjunto de procesos


distribuidos que autorregulen el acceso a una
zona de exclusin mutua comn
+
Descripcin

n Usaremos el algoritmo de Ricart y Agrawala


n Tema 6 Exclusin mutua distribuida
n Ricart, G.; Agrawala, A.K.: An Optimal Algorithm for Mutual
Exclusion in Computer Networks, Communications of the ACM,
Vol. 24, No.1, pp.917, 1981

n Las marcas temporales se obtendrn mediante el


tiempos lgicos de Lamport
n Tema 5 Tiempo y relojes lgicos

n Como requisito auxiliar necesitamos un algoritmo tipo NTP


n Tema 5 - Sincronizacin
+
Diseo
Despliegue

l La prctica consiste en 6 procesos java en tres nodos


distintos (2 procesos por mquina)

l Se debern desplegar los procesos en todas las mquinas


desde un nico nodo.
+
Diseo
Proceso

l Todos los procesos ejecutan el mismo programa,


garantizando tiempos aleatorios independientes
l Mediante una llamada a sleep, simulan la realizacin de un
clculo de duracin aleatoria, distribuida uniformemente
entre 0.3 y 0.5s
l Luego entrarn en una seccin crtica comn de gestin
distribuida (SC)
l Permanecern en ella de 0.1 a 0.3s
l Repetirn el clculo + estancia en SC 100 veces
l Terminarn la ejecucin de manera ordenada
+
Diseo
Algoritmo R&A + Lamport (N procesos)

En la inicializacin (pi) Al recibir una peticin <Tj, pj> en pi


estado = LIBERADA; Ci = max(Ci , Tj ) + 1 // LC2
Ci = 0; si ( estado = TOMADA o
(estado = BUSCADA y (Ti , pi ) < (Tj , pj )*) )
cola vaca;
pon en cola la peticin, por parte de pj
si no
Entrada en la SC (pi)
responde inmediatamente a pj
estado = BUSCADA;
Ti = Ci Salida de la SC (pi)
Multidifusin de la peticin <Ti , pi > de estado = LIBERADA;
entrada en SC responder a todas las peticiones en cola;
Espera hasta que (n de respuestas = (N-1)); cola vaca;
estado = TOMADA;
Ci = Ci + 1 // LC1

*(Ti, pi ) < (Tj , pj ) implica que Ti < Tj o que T = Tj y pi < pj


Para ello, los identificadores de proceso deben ser comparables (p. ej. p1 < p2)
+
Diseo
logs

l Cada vez que un proceso entra en la SC, escribe en un


fichero local de log una lnea:
l Px E tiempo
- x es el identificador de proceso (del 1 al 6)
- tiempo es el nmero de milisegundos transcurridos desde
el 1 de enero de 1970, segn el reloj de la mquina local
(System.currentTimeMillis())

l Cuando abandone la SC, imprimir


l Px S tiempo
- Mismas especificaciones que para la entrada
+
Diseo
Comprobacin

n Al finalizar la ejecucin, deben unirse los ficheros de log y


verificar que no ha habido violacin de la seccin crtica

n Como los relojes de cada mquina no estn sincronizados,


debemos
nCalcular mediante un algoritmo similar a NTP los desvos de las
mquinas respecto a una de ellas, que se tomar como
referencia, y el error cometido en la medida del desvo

n La comprobacin y estimacin de los desvos se har


mediante un proceso supervisor (puede ser uno de los 6
procesos, o un proceso aparte), que se ejecutar en una de las
mquinas (mquina de referencia)
+
Diseo
Algoritmo NTP

l Se ejecutar 10 veces al principio y 10 veces al final del


proceso supervisor, para estimar el desplazamiento (offset)
y retardo (delay) cometido.
l Tomaremos un par <o1,d1> de la ejecucin al inicio y otro
<o2,d2> de la ejecucin al final, correspondientes a la iteracin
de menor delay de cada tanda de 10.
l Usaremos como estimacin <o,d>=media(<o1,d1>,<o2,d2>)
l Opcionalmente, se puede estimar <o,d> con el algoritmo de
Marzullo* utilizando los 20 pares.

l La comprobacin slo admitir la simultaneidad dentro de


la seccin crtica si el tiempo de colisin es inferior al error
obtenido en la estimacin del desvo de los relojes

*En el tema 5.-tiempos (diap.27). Una buena explicacin del pseudocdigo en Wikipedia
+
Diseo: resumen
Slo en el proceso
NTP x10 supervisor

log

Simular clculos 0.3-0.5 s

Entrada SC Px E tiempo
x100
Estancia SC 0.1-0.3 s

Salida SC
Px S tiempo

NTP x10

Fusionar y
Recoger logs Corregir tiempos
comprobar logs
+
Detalles
Requisitos

l El programa se har utilizando REST


l Debe funcionar en Windows y/o Linux del laboratorio, segn
el despliegue acordado

l Las prcticas se realizan en parejas

l Plazos de entrega y defensa en Studium

l Una vez pasado el plazo de entrega, la prctica no se puede


modificar

l La deteccin de copia implica suspender automticamente


la asignatura
+
Detalles
Entrega

l Deben entregarse los ficheros fuente del programa, comprimidos


l Un fichero por clase java utilizada (slo los .java)
l Scripts de lanzamiento
l Cualquier otro documento que consideris oportuno
l .jar, informes, etc.

l La entrega se realizar por Studium (ambos miembros de la


pareja deben realizar la entrega)
l El nombre del fichero comprimido debe ser
Apellido1Nombre1Apellido2Nombre2
l Apellido1 y Nombre1 se refieren al primer apellido y nombre
del primer miembro de la pareja (segn orden alfabtico del
primer apellido)
l Apellido2 y Nombre2 al primer apellido y nombre del otro
+
Detalles
Evaluacin

l Para obtener un 5, basta con que funcione


correctamente en Windows o Linux en el laboratorio
l Se considera correcto:
l Que realice bien el algoritmo, sin provocar interbloqueo
ni inanicin.
l Que lo haga siguiendo los requisitos definidos
l La comprobacin de logs no debe detectar violaciones
de la SC

A partir de ah, se valorar la calidad del trabajo:


l Documentacin del cdigo fuente
l Principios de ingeniera (modularidad, claridad, etc)
l Defensa del trabajo (evaluacin individual*)

*NOTA: Una prctica correcta puede suspenderse si el/los


estudiantes no son capaces de defenderla satisfactoriamente
+
Recomendaciones
Programar por secciones

l Programar seccin crtica y escritura en logs


l Prueba en local, con 2/3 procesos

l Incluir comunicacin REST


l Como en la fase 1
l Prueba con 2 ordenadores y 4/6 procesos

l Incluir NTP
l Muy parecido a la fase 2

l Recogida (scp) y fusin de logs (cat+sort)

l Comprobacin SC

l shell (awk) o java (BufferedReader)

l O usar:
http://vis.usal.es/rodrigo/documentos/aso/Comprobador.java
+
Bibliografa

n G. Coulouris, J. Dollimore, T. Kindberg and G. Blair. Distributed


Systems: Concepts and Design (5th Ed). Addison-Wesley, 2011

n Seccin 15.2, pginas 637-639

n Ricart, G.; Agrawala, A.K.: An Optimal Algorithm for Mutual


Exclusion in Computer Networks, Communications of the ACM, Vol.
24, No.1, pp.917, 1981

n Disponible en http://vis.usal.es/rodrigo/documentos/sisdis/papers/Ricart1981.pdf
+
FAQ
Frequently Asked Questions
+
FAQ
Cada proceso es un servidor o un cliente?

n Cada proceso deber tener ambos aspectos


n Enviar mensajes a otros procesos
n Por ejemplo, para entrar o conceder acceso a la SC
n Atender peticiones de otros procesos
n Por ejemplo, peticiones de entrada en la SC o recepcin de
permisos de entrada
+
FAQ
Cmo selecciono el proceso al que quiero invocar?

n Con REST y Tomcat slo podemos invocar mtodos de una clase,


sin embargo, hablamos de tener dos instancias de la misma clase
Proceso en ejecucin que ofrecen servicios. Cmo puedo
acceder una en concreto?

n Hay varias opciones:


n Lanzar varios servidores, escuchando en distintos puertos
n Proceso 1: http://ip:8080/Proceso/servicio
n Proceso 2: http://ip:8081/Proceso/servicio
n Utilizar como servicio de cara al exterior una clase @Singleton Despachador
que mantenga un array con los dos procesos, acepte el id del proceso como
argumento en la url, y derive la peticin al proceso correspondiente
n Proceso 1: http://ip:8080/Despachador/servicio?id=proceso1
n Proceso 2: http://ip:8080/Despachador/servicio?id=proceso2
n O cualquier otro mtodo que se os ocurra, mientras cumpla con las condiciones
del ejercicio
+
FAQ
Cmo lanzo los procesos si son a la vez servicios?

n De alguna manera, el servicio debe tener conocimiento del


estado del proceso o procesos a los que representa

n Se puede implementar un servicio de arranque de procesos


que inicie/ponga en ejecucin los procesos indicados.

Das könnte Ihnen auch gefallen