Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
-Exclusión mutua.
Los requisitos para resolver el problema de la sección crítica son los siguientes:
1
Los algoritmos de exclusión mutua deben satisfacer los siguientes requisitos:
Liveness Todo proceso que solicita entrar a la región crítica, al final lo consigue.
Orden. Si una petición para entrar en la sección crítica ocurrió antes que otra,
entonces la entrada a la sección crítica se garantiza en ese orden.
-La entrada en la sección crítica conlleva dos mensajes: una petición y una concesión.
-Una pérdida del mensaje de respuesta del servidor deja bloqueado al proceso.
2
1.2 Algoritmo en anillo
Una de las formas más simples de conseguir la exclusión mutua entre los N procesos sin que se
necesite un proceso adicional es organizarlos como un anillo. La idea se basa en conseguir la
exclusión mutua obteniendo un token o testigo mediante un mensaje que se pasa de un proceso
a otro en una única dirección alrededor del anillo.
De esta forma, cuando un proceso quiere entrar en la sección crítica
espera a recibir el testigo y lo retiene, y cuando sale de la sección crítica
envía el testigo al siguiente proceso del anillo. Si un proceso no quiere
entrar en la sección crítica, cuando recibe el testigo inmediatamente lo
hace avanzar hasta su vecino.
-La topología en anillo no tiene por qué estar relacionada con las
interconexiones físicas subyacentes entre los computadores.
-Entrar en la sección crítica cuesta tantos mensajes como procesos en el allí menos uno.
(En el peor caso)
-Si el receptor quiere entrar en la sección crítica, compara su marca de tiempo con la
que le ha llegado en el mensaje. Si el mensaje tiene una marca de tiempo menor, le dice
“OK”. Si, por el contrario, él tiene la marca de tiempo menor, entra él a la sección crítica
y no envía nada.
Cuando el proceso que envío el mensaje broadcast recibe la respuesta de todos los procesos,
puede entrar en la sección crítica.
3
Ejemplo:
-Dos procesos (P0, P2) quieren entrar en la sección critica al mismo tiempo.
-Cuando el proceso 0 acaba, envía un mensaje OK. De esta forma, el proceso P2 entra.
Un proceso candidato debe recoger suficientes votos para entrar en la sección crítica. Para ello,
hay que agrupar a los procesos en grupos no disjuntos, de forma que:
4
-Identificar cuándo se está en proceso de votación.
-El ancho de banda en general es menor que para el caso de Ricart y Agrawala. Es menor
en el caso de que no contemos con un sistema multicast que afecte a todos.
2. Algoritmos de elección.
Los algoritmos de elección son útiles en aplicaciones donde existe un coordinador, ya que se
utilizan para escoger un proceso único que juegue un papel específico. Por ejemplo, en una
variante de nuestro algoritmo de “servidor central” para exclusión mutua que hemos visto
anteriormente, el servidor se escoge entre los procesos que necesitan usar la sección crítica.
El algoritmo se ejecuta, cuando falla el coordinador, en todos los procesos para seleccionar de
manera común un coordinador. Se requiere que el proceso elegido sea escogido como aquel de
5
con el mayor identificador. Este “identificador” puede ser cualquier marca con orden total
(carga, fiabilidad, posición, etc)
Un requisito importante es que la selección del proceso elegido sea única, incluso aunque el
algoritmo de elección se inicie de forma concurrente en varios procesos. Por ejemplo, dos
procesos podrían decidir de forma independiente que un proceso coordinador ha fallado y pedir
ambos elecciones.
Nuestros requisitos serán que durante una ejecución en particular del algoritmo:
Cuando un proceso recibe un mensaje de elección, compara el identificador del mensaje con el
suyo:
-Si el identificador que le llega es mayor, entonces hace avanzar el mensaje hacia su
vecino.
El algoritmo del anillo es apropiado para un conjunto de procesos en el cual cada proceso pi
tiene un canal de comunicación con el siguiente proceso del anillo. De tal forma, que todos los
mensajes se envían en el mismo sentido a través del anillo.
6
Ejemplo: 1 2 2
6
Los procesos 2 y 5 generan mensajes de elección y lo envían al
siguiente. Se elige coordinador el proceso que recibe un mensaje 0 3
con su número y es el mayor.
3
Este proceso a continuación envía mensajes a todos informando 6
que es el coordinador. 7 4
6 5
5
Ejemplo:
7
3. Multidifusión.
La característica principal de la comunicación por multidifusión es que un proceso realiza
solamente una operación multicast para enviar un único mensaje que llega a cada uno de los
miembros de un grupo, en lugar de realizar múltiples operaciones de enviar sobre los procesos
individuales.
Se dice que un grupo está cerrado si sólo los miembros del grupo pueden multidifundir dentro
de él. Un proceso dentro de un grupo cerrado se entrega a sí mismo cualquier mensaje que
multidifunde al grupo. Un grupo se dice abierto si los procesos que no están en el grupo le
pueden mandar mensajes a los procesos del grupo.
Ventajas
- El uso de una única operación multicast en lugar de múltiples operaciones de enviar, permite
una eficiente utilización del ancho de banda.
3.1 IP Multicast
La multidifusión IP se construye sobre Internet Protocol, y permite que el emisor transmita un
único paquete IP a un conjunto de computadores que forman un grupo de multidifusión. Tiene
las siguientes características:
-El emisor no tiene que por qué conocer las identidades de los receptores ni el tamaño
del grupo.
8
3.2 Basic (B-) Multicast
B-multicast es la mínima primitiva de multidifusión que garantiza, a diferencia de IP Multicast,
que un proceso correcto entregará el mensaje siempre que el sistema que realiza la
multidifusión no se caiga. Además, permite que los procesos pertenezcan a varios grupos.
Una forma de implementar el B-multicast es utilizar una operación envía fiable uno-a-uno de la
siguiente forma:
Al recibir(m) en p: B-entrega(m) en p
-Integridad. Un proceso entrega un mensaje como mucho una vez. Además, los
mensajes pueden distinguirse utilizando números de secuencia.
9
Implementación de la multidifusión fiable sobre IP-multicast.
Una alternativa para obtener R-mcast es combinar la multidifusión IP, ack empotrados en otros
mensajes (piggy backed) y negative acknowledge. Este protocolo se basa en la premisa de que
la comunicación por multidifusión IP casi siempre tiene éxito.
En el protocolo, los procesos no envían ACK separados de los mensajes, si no que en su lugar
adhieren los reconocimientos en los mensajes que envía al grupo. Los procesos envían un
mensaje de respuesta por separado solo cuando detectan que han perdido un mensaje
(negative acknowledge). Esta descripción supone que los grupos son cerrados.
¿Cómo funciona?
Cada proceso p mantiene un número de secuencia Seq para cada grupo g al que pertenece. El
número de secuencia es inicialmente 0. Cada proceso almacena además Rp, el número de
secuencia del último mensaje que ha sido entregado por el proceso p y que fue enviado desde
el grupo g.
Un proceso entrega un mensaje destinado para g con el número de secuencia Seq y proveniente
de p si y solo si Seq = Rp + 1, e incrementa Rp en uno tras la entrega. Además, cualquier mensaje
que no haya podido entregar es retenido en una cola de retención.
Si por otro lado, un mensaje que llega tiene Seq < Rp, entonces otro proceso ha entregado el
mensaje antes y lo descarta.
10
Ejemplo de ordenación total y causal.
Garantías de orden.
Existen algoritmos que solucionan de forma específica estos tipos de acuerdo, y han de cumplir
las siguientes condiciones:
En la definición informal del problema de ellos generales bizantinos, tres o más generales han
de ponerse de acuerdo en si atacar o retirarse. Uno de ellos, el comandante, cursa la orden. Los
otros, los tenientes del comandante deben decidir si atacar o retirarse. Pero uno o más de los
generales puede ser un “traidor”, o lo que es lo mismo, pueden fallar. Si el comandante es el
traidor, mandar atacar a un general y retirarse a otro. Si el traidor es un teniente, informa a uno
de sus iguales que el comandante le mandó atacar mientras que a otro le dice que le ordenó
retirarse.
11
El problema de los generales bizantinos se distingue de los problemas de consenso en que un
proceso destacado proporciona un valor en el que los otros han de ponerse de acuerdo, en vez
de que cada uno proponga un valor. Los requisitos son:
Este problema es otra variante del consenso, en el cual todo proceso propone un solo valor. El
objetivo del algoritmo es que los procesos se pongan de acuerdo en un vector de valores, uno
para cada proceso. A éste se le llamará vector de decisión.
12