54
Modelos Teóricos de Control de la Concurrencia Tema 4 - Programación Concurrente y de Tiempo Real Antonio J. Tomeu 1 Manuel Francisco 2 1 Departamento de Ingeniería Informática Universidad de Cádiz 2 Alumno colaborador de la asignatura Universidad de Cádiz PCTR, 2015

Tema 4

  • Upload
    atomeu

  • View
    29

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Tema 4

Modelos Teóricos de Control de la ConcurrenciaTema 4 - Programación Concurrente y de Tiempo Real

Antonio J. Tomeu1 Manuel Francisco2

1Departamento de Ingeniería InformáticaUniversidad de Cádiz

2Alumno colaborador de la asignaturaUniversidad de Cádiz

PCTR, 2015

Page 2: Tema 4

Contenido

1. El Problema de la Exclusión Mutua.2. Concepto de Sección Crítica.3. Algoritmos de Espera Ocupada.4. Semáforos. Protocolos de Exclusión Mutua, Sincronización y

Barrera.5. Regiones Críticas.6. Monitores.

Page 3: Tema 4

Niveles de Exclusión Mutua-Sincronización

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 3 / 54

Page 4: Tema 4

El Problema de la Exclusión Mutua

I N procesos concurrentes ejecutan un lazo infinito deinstrucciones, divididas en sección crítica y resto de código.Los programas satisfacen la exclusión mutua.

I Sólo un proceso ejecuta su sección crítica. Para ello, seintroducen protocolos de entrada y salida, que suelen requerirvariables adicionales.

I Un proceso puede pararse en su zona no crítica, pero nodurante la ejecución de los protocolos o de la sección crítica.

I No habrá bloqueos. Si varios procesos desean acceder asección crítica, alguno lo conseguirá eventualmente.

I No habrá permanencia indefinida de procesos en elpre-protocolo, sino que todos deberán tener éxito en el accesoa sección crítica. No habrá procesos ansiosos.

I Si no hay contenciones, un único proceso deseoso de acceder asección crítica lo logrará. Progreso en la ejecución.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 4 / 54

Page 5: Tema 4

Espera Ocupada

I Se logra la exclusión mutua mediante protocolos de entradaque consumen ciclos de CPU.

I Podemos agrupar las soluciones que utilizan esta técnica endos grandes grupos:

I Soluciones software. Las únicas instrucciones atómicas de bajonivel que consideran son load/store.

I Algoritmos de Dekker, Peterson, Knuth, Kesell,Eisenberg-McGuire, Lamport.

I Soluciones hardware. Utilizan instrucciones específicas delectura-escritura o intercambio de datos en memoria comúncuya ejecución es garantizada como de carácter atómico.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 5 / 54

Page 6: Tema 4

Intento Incorrecto: Tomando Turnos

Turno: integer range 1..2 := 1;

task body P2 isbeginloop

Resto_código_2;loop exit when Turno = 2;end loop;Sección_Crítica_2;Turno := 1;

end loop;end P2;

task body P1 isbeginloopResto_código_1;loop exit when Turno = 1;end loop;Sección_Crítica_1;Turno := 2;

end loop;end P1;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 6 / 54

Page 7: Tema 4

Ejercicios

I Cree una condición de carrera entre dos hilos utilizando unavariable común (emVC.java).

I Controle la exclusión mutua utilizando el protocolo anterior.I Verifique que la exclusión mutua se preserva.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 7 / 54

Page 8: Tema 4

Soluciones Algorítmicas con Variables Comunes

I Algoritmo de Dekker.I Algoritmo de Kesell.I Algoritmo de Peterson.I Algoritmo de Lamport.I Algoritmo de Eisenberg-McGuire.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 8 / 54

Page 9: Tema 4

Inconvenientes de los Algoritmos de Exclusión Mutua

I Utilizan espera ocupada.I Requieren un análisis y programación muy cuidadosos.I Están muy ligados a la máquina en que se implementan.I No son transportables.I No dan una interfaz directa al programador.I Son poco estructurados.I Son difíciles de entender a un número arbitrario de entidades

concurrentes.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 9 / 54

Page 10: Tema 4

Semáforos: Definición y Operaciones

DefiniciónUn semáforo es una variable S entera que toma valores nonegativos y sobre la que se pueden realizar dos operaciones. Sonintroducidos inicialmente por Djisktra en 1965.

I Operaciones soportadas:I Wait (S): Si S > 0, entonces S:=S-1. En otro caso, la entidad

concurrente es suspendida sobre S , en una cola asociada.I Signal (S): Si hay una entidad concurrente suspendida, se le

despierta. En otro caso, S:=S+1.I Notación:

Wait (S)=P(S)Signal (S)=V(S)

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 10 / 54

Page 11: Tema 4

Semáforos: Generalidades

I Wait y Signal son atómicas.I El valor inicial de un semáforo es no negativo.I Signal despierta a algún proceso, no especificado por la

definición (aunque es habitual un FIFO).I Hipótesis de corrección.I Semáforos generales: S ≥ 0I Semáforos binarios: S = {0, 1}I Ecuaciones de Invariancia: deben ser satisfechas por cualquier

implementación del concepto de semáforo:

S ≥ 0S = S0 + |Signals| − |Waits|

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 11 / 54

Page 12: Tema 4

Semáforos: Implementación I

Implementación

Type semaforo=record ofS: integer;L: lista_de_procesos;

end;

I La variable S mantiene el valor actual del semáforo.I L es una estructura de datos, en principio dinámica.I Cuando S = 0 y un proceso llama a Wait es bloqueado y

mantenido en la lista S .I Cuando otro proceso señaliza sobre S , alguno de los

bloqueados sale de L según algún algoritmo de prioridad.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 12 / 54

Page 13: Tema 4

Semáforos: Implementación II

procedure inic(var sem:semaphore; s0:integer);beginsem.s:=s0;inicializar(sem.L);

end;

procedure wait(var sem:semaphore);begin

if sem.s>0then

sem.s:=sem.s-1;elsebegin

sem.L.insertar(proceso);bloquear (proceso);

end;end;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 13 / 54

Page 14: Tema 4

Semáforos: Implementación III

procedure signal(var sem:semaphore);beginif not sem.L.vacia()thenbegin

sem.L.eliminar (proceso);desbloquear (proceso);

end;else

sem.s:=sem.s+1;end;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 14 / 54

Page 15: Tema 4

Semáforos: Modalidades de Implementación

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 15 / 54

Page 16: Tema 4

Semáforos en C I

I C dispone de la biblioteca sem.h en el marco de las facilidadesIPC.

I Define conjuntos de semáforos.I Semántica muy diferente a la estándar de Djikstra.I Son más expresivos.I Funciones semget, semctl y semop.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 16 / 54

Page 17: Tema 4

Semáforos en C II

1 /* Antonio J. Tomeu -Dpto. LSI -Area CC. e I.A. */2 /* Ejemplo de Wait sobre un semaforo IPC */34 #include <stdio.h>5 #include <sys/stat.h>6 #include <sys/types.h>7 #include <sys/ipc.h>8 #include <sys/sem.h>9 #include <string.h>

1011 #define PERMISOS S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH12 #define TAM 313 #define CLAVE (key_t) 6661415 void ajustar (struct sembuf *s, int valor , int operacion , int

flags)16 {17 s->sem_num = (short) valor;18 s->sem_op = operacion;19 s->sem_flg = flags;20 }21

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 17 / 54

Page 18: Tema 4

Semáforos en C III

22 int main(void)23 {24 int semid;25 struct sembuf mioper[TAM -1];26 semid = semget(CLAVE , TAM , IPC_CREAT | PERMISOS);2728 /* Creacion */29 if(semid ==-1)30 printf("Error");3132 semctl(semid , 0, SETVAL , 1);33 ajustar (&( mioper [0]), 0, -1, 0);34 semop(semid , mioper ,1);3536 /*Wait=>Decremento del semaforo */37 semop(semid , mioper ,1);3839 /*Wait=>Bloqueo del proceso */40 /* Eliminacion del conjunto de semaforos */41 semctl(semid , NULL , IPC_RMID);42 }

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 18 / 54

Page 19: Tema 4

Semáforos en Java

I Java no dispuso de semáforos como primitivas hasta 1.5.I Java proporciona primitivas de control de la exclusión mutua

en el acceso concurrente a objetos (cerrojos).I Java permite forzar la ejecución de métodos en exclusión

mutua.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 19 / 54

Page 20: Tema 4

Protocolo de Exclusión Mutua con Semáforos

S: semaforo := 1;

Task body P1 isbeginloop

Resto_1;Wait (S);Seccion_Critica_1;Signal (S);

end loop;end P1;

Task body P2 isbeginloopResto_2;Wait (S);Seccion_Critica_2;Signal (S);

end loop;end P2;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 20 / 54

Page 21: Tema 4

Ejercicio

I Descargue emSem.java.I Verifique la preservación de la exclusión mutua.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 21 / 54

Page 22: Tema 4

Protocolo de Sincronización con Semáforos

I Sincronizar P1 y P2 para que P2 espere a la señal de P1.

S: semaforo := 0;

Task body P1 isbeginloop

Codigo;Signal (S);Codigo;

end loop;end P1;

Task body P2 isbeginloopCodigo;Wait (S);Codigo;

end loop;end P2;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 22 / 54

Page 23: Tema 4

Barreras con Semáforos

BarreraUna barrera es un punto del código que ninguna entidadconcurrente sobrepasa hasta que todas han llegado a ella.

Para dos procesos:

Barrera1: semaforo := 0;Barrera2: semaforo := 0;

Task body P1 isbeginloop

Signal (Barrera1);Wait (Barrera2);Codigo_Restante;

end loop;end P1;

Task body P2 isbeginloopSignal (Barrera2);Wait (Barrera1);Codigo_Restante;

end loop;end P2;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 23 / 54

Page 24: Tema 4

Sincronización compleja: Productor-Consumidor

I Idealmente el buffer de comunicación es infinito.I El productor puede insertar tantos datos como desee.I El comsumidor solo puede extraer de un buffer con datos.I Semáforo Elements para controlar al consumidor.I Variables de puntero que indican las posiciones donde se

inserta o se extrae: In_Ptr, Out_Ptr.I Acceso a las variables de puntero en exclusión mutua mediante

el uso de un semáforo binario: em.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 24 / 54

Page 25: Tema 4

Aproximación Inicial

B: array (0..infinity) of integer;In_Ptr, Out_Ptr: integer:=0;

Task body Productor isI:Integer;beginloop

producir (I);B(In_Ptr):=I;In_Ptr:= In_Ptr+1;

end loop;end Productor;

Task body Consumidor isI:Integer;beginloopI:=B(Out_Ptr);Out_Ptr:= Out_Ptr+1;consumir (I);

end loop;end Consumidor;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 25 / 54

Page 26: Tema 4

Análisis de la Aproximación Inicial

I In_Ptr cuenta el número de elementos insertados en el buffer.I Out_Ptr cuenta el número de elementos extraídos del buffer.I Podemos definir el estado del buffer de acuerdo a:

E = In_Ptr − Out_Ptr

I Puesto que, claramente, E es siempre mayor o igual que 0, setiene que:

E ≥ 0E = 0+ In_Ptr − Out_Ptr

I Que coinciden con las ecuaciones de invariancia de unsemáforo.

I Cabe plantear entonces la sincronización de ambos procesoscon el uso de un semáforo que controle las condiciones deacceso al buffer de los procesos productor y consumidor.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 26 / 54

Page 27: Tema 4

Aproximación con Buffer Infinito

B: array (0..infinity) of integer;In_Ptr, Out_Ptr: integer:=0;Elements: semaphore:=0;em: semaphore:=1;

Task body Productor isI:Integer;beginloop

producir (I);Wait (em);B(In_Ptr):=I;In_Ptr:= In_Ptr+1;Signal (em);Signal (Elements);

end loop;end Productor;

Task body Consumidor isI:Integer;beginloopWait (Elements);Wait (em);I:=B(Out_Ptr);Out_Ptr:= Out_Ptr+1;Signal (em);consumir (I);

end loop;end Consumidor;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 27 / 54

Page 28: Tema 4

Aproximación con Buffer Finito

B: array (0..N-1) of integer;In_Ptr, Out_Ptr: integer:=0;Elements: semaphore:=0;Spaces: semaphore:=N;em: semaphore:=1;

Task body Productor isI:Integer;beginloop

producir (I);Wait (Spaces);Wait (em);B(In_Ptr):=I;In_Ptr:= (In_Ptr+1)modN;Signal (em);Signal (Elements);

end loop;end Productor;

Task body Consumidor isI:Integer;beginloopWait (Elements);Wait (em);I:=B(Out_Ptr);Out_Ptr:= (Out_Ptr+1)modN;Signal (em);Signal (Spaces);consumir (I);

end loop;end Consumidor;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 28 / 54

Page 29: Tema 4

Ejercicios

I Descargue prodCon.java.I Añada un semáforo de control de recursos comunes en

exclusión mutua.I Añada semáforos de sincronización.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 29 / 54

Page 30: Tema 4

Inconvenientes de los Semáforos

I Bajo nivel.I No estructurados.I Balanceado incorrecto de operaciones.I Semántica poco ligada al contexto.I Mantenimiento complejo de códigos que hacen uso exhaustivo

de semáforos.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 30 / 54

Page 31: Tema 4

Regiones Críticas

DefiniciónUna región crítica es una sección crítica cuya ejecución bajoexclusión mutua está garantizada (Hoare y Brinch-Hansen, 1972).

I Más alto nivel que los semáforos.I Agrupa acceso a recursos comunes (variables) en regiones

(recursos).I Variables comunes etiquetadas como compartidas o recurso.I Un proceso no puede entrar en una región donde ya hay otro

proceso. Debe esperar.I Son una notación de carácter sintáctico.I Permiten detectar accesos indebidos en tiempo de compilación.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 31 / 54

Page 32: Tema 4

Regiones Críticas: Sintaxis

var V: shared T;. . .. . .region V doS; /* acceso en e.m. a V */

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 32 / 54

Page 33: Tema 4

Regiones Críticas: Semántica

I Las entidades concurrentes sólo pueden acceder a variablescompartidas dentro de una región crítica.

I Una entidad concurrente que desee entrar en una región lologrará en tiempo finito.

I En tiempo t, sólo puede haber un proceso dentro de unaregión crítica.

I Una entidad concurrente pasa un tiempo finito dentro de unaregión crítica y posteriormente la abandona.

I Un proceso que no puede entrar a una región es puesto enespera.

I En general, la gestión de la cola de procesos en espera esequitativa.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 33 / 54

Page 34: Tema 4

Regiones Críticas: Inconvenientes

I Su anidamiento puede producir interbloqueos.

P: region x doregion y do S1:

Q: region y doregion x do S2;

I No dan soporte para resolver sincronización.I Mejora: regiones críticas condicionales.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 34 / 54

Page 35: Tema 4

Regiones Críticas en C/C++

I No existen como tales.I Pueden simularse a partir de otras primitivas.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 35 / 54

Page 36: Tema 4

Regiones Críticas en Java

I Existen mediante bloques de código synchronized.I Requieren de un objeto para proveer el bloqueo (Tema 5).

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 36 / 54

Page 37: Tema 4

Ejercicios

I Descargue regCritica.java

I Verifique la preservación de la exclusión mutua.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 37 / 54

Page 38: Tema 4

Monitores

DefiniciónUn monitor es una construcción sintáctica de un lenguaje deprogramación concurrente que encapsula un recurso crítico agestionar en exclusión mutua, junto con los procedimientos que logestionan. Por tanto, se da una centralización de recursos y unaestructuración de los datos [Hoare, 1974].

I Encapsulación de los datos.I Alta estructuración.I Exclusión mutua de procesos internos por definición.I Sincronización mediante el uso del concepto de señal.I Compacidad y eficacia.I Transparencia al usuario.I Tienen las mismas capacidades que los semáforos.I Son más expresivos.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 38 / 54

Page 39: Tema 4

Monitores: Idealización Gráfica

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 39 / 54

Page 40: Tema 4

Monitores: Estructura Sintáctica

type nombre-monitor=monitordeclaraciones de variables

procedure entry P1(...)begin ... end;...procedure entry PN(...)begin ... end;

begincodigo de inicializacion

end;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 40 / 54

Page 41: Tema 4

Monitores: Modelo Semántico

I El acceso de las entidades concurrentes al monitor es enexclusión mutua.

I Las variables de condición (señales) proveen sincronización.I Una entidad concurrente puede quedar en espera sobre una

variable de condición. En ese momento, la exclusión mutua selibera y otras entidades pueden acceder al monitor.

I Disciplinas de señalización más utilizadas:I Señalar y salir: la entidad que señaliza abandona el monitor.I Señalar y seguir: la entidad que señaliza sigue dentro del

monitor.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 41 / 54

Page 42: Tema 4

Monitores: Control de la exclusión mutua

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 42 / 54

Page 43: Tema 4

Monitores: Variables de Condición (señales)

I Permiten sincronizar a las entidades concurrentes que accedenal monitor.

I Declaración: nombre_variable: condition;I Operaciones soportadas:

I wait(variable_condición): la entidad concurrente quedentro del monitor hace la llamada es suspendida en una colaFIFO asociada a la variable en espera de que se cumpla lacondición. Exclusión mutua liberada.

I send(variable_condición): proceso situado al frente de lacola asociada a la variable despertado.

I non_empty(variable_condición): devuelve verdadero si lacola asociada a la variable no está vacía.

NOTA: En ocasiones, la sintaxis podrá ser c.wait, c.send para una variable decondición c.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 43 / 54

Page 44: Tema 4

Monitores: Disciplinas de Señalización I

Tipo Carácter Clase de SeñalSA Señales automáticas Señales implícitas, incluidas por el compila-

dor. No hay que programar send.SC Señalar y continuar Señal explícita no desplazante. El proceso se-

ñalador no sale.SX Señalar y salir Señal explícita desplazante. El proceso seña-

lador sale. Send debe ser la última instruccióndel monitor.

SW Señalar y esperar Señal explícita desplazante. El proceso seña-lador sale y es enviado a la cola de entradadel monitor.

SU Señalar con urgencia Señal explícita desplazante. El proceso seña-lador sale y es enviado a una cola de procesosurgentes, prioritaria sobre la de entrada.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 44 / 54

Page 45: Tema 4

Monitores: Disciplinas de Señalización II

Figura: Señalar y Continuar

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 45 / 54

Page 46: Tema 4

Monitores: Disciplinas de Señalización III

Figura: Señalar y Salir

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 46 / 54

Page 47: Tema 4

Monitores: Disciplinas de Señalización IV

Figura: Señalar y Esperar

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 47 / 54

Page 48: Tema 4

Monitores: Disciplinas de Señalización V

Figura: Señalar con Urgencia

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 48 / 54

Page 49: Tema 4

Monitor Productor-Consumidor

monitor prod_con isB: array(0..N-1) of Integer;In_Ptr, Out_Ptr: Integer:=0;Count: Integer:=0;Not_Full, Not_Empty: Condition;

Procedure Añadir(I:in Integer) isbeginif Count=N then wait(Not_Full);end if;

B(In_Ptr):=I;In_Ptr:=(In_Ptr+1) mod N;Send(Not_Empty);

end;

Procedure Coger(I:out Integer) isbeginif Count=0 then wait(Not_Empty);end if;

I:=B(Out_Ptr);Out_Ptr:=(Out_Ptr+1) mod N;Send(Not_Full);

end;end prod_con;

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 49 / 54

Page 50: Tema 4

Monitores en C/C++

I C++11 proporciona (¡por fin!) clases que dan soporte a:I Cerrojos.I Variables de condición.

I Es posible implantar monitores mediante su uso combinado.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 50 / 54

Page 51: Tema 4

Monitores en Java

I Todo objetos es un monitor potencial.I Clase Object: métodos wait, notify, notifyAll.I Clases con métodos synchronized.I Sólo soporta variables de condición a partir de Java 1.5.I En otro caso, hay que simular la sincronización con los

métodos de la clase Object.I Equivalen a una única variable de condición.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 51 / 54

Page 52: Tema 4

Ejercicios

I Descargue incDecMonitor.java.I Escriba una condición de carrera sobre un objeto de la clase

anterior.I Verifique la preservación de la exclusión mutua.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 52 / 54

Page 53: Tema 4

En el Próximo Tema...

I Control de la Concurrencia en Java.I API estándar.I Códigos y Métodos synchronized.I Protocolos de exclusión mutua.I Sincronización.I Diseño de Monitores en Java.

Antonio J. Tomeu, Manuel Francisco Modelos Teóricos de Control de la Concurrencia 53 / 54

Page 54: Tema 4

Bibliografía

Ben-Ari, M.Principles of Concurrent and Distributed ProgrammingAdd. Wesley, 2006

Raynal, M.Algorithms for Mutual ExclusionMIT Press, 1986

Palma, J.Programación Concurrente