Programación concurrente
Resumen Examen de Septiembre programación Concurrente.
Tema1: Introducción a la programación Concurrente.
-
-
Hay que evitar la espera activa (se denomina espera activa a una técnica donde un proceso repetidamente verifica una condición, tal como esperar una entrada de teclado o si el ingreso a una seccióncrítica está habilitado). Accion atómica: desarrollada sin interferencias de otras tareas (cada una de las instrucciones en ensamblador) Serializabilidad: ejecución concurrente equivalente a algún entrelazado de acciones atómicas. Propiedades Prog.Concurrente: A menudo: (no siempre) o Complejidad no importante o Terminación no esencial. o Resultados finales no existentes Relevante: o Correción delos resultados parciales. o Existencia de res. deseados Tres tipos de propiedades: o Seguridad: Deben cumplirse siempre o Vivacidad: Deben cumplirse en algún momento o Prioridad. Relacionadas con vivacidad Diferentes prioridades pueden dar inanición A veces esto es lo requerido De manera explícita, unas tareas pueden tener más derecho a ejecutarse que otras. o Inanición: procesosconspiran para que otro no progrese. (vivacidad)
(Revisar los artículos del tema 1) Recordatorio
®Rubén Gallego Fernández. Programación Concurrente. Examen Septiembre 2009®
Tema2: Tareas en ADA.
Tareas en Ada: Anónimas (sólo una de cada tipo) Task Tarea_A; Task body tarea_A is Begin --codigo End Tarea_A; Como tipos: o Sin paso de parámetros Task type Tipo_A; Task body tipo_A is Begin --codigoEnd Tipo_A; o Declaración de variable crea tarea (apuntada por variable) -> Tarea_A : Tipo_A; o En cierto sentido variable ≡ tarea o Varias tareas con código idéntico-> Varias_tareas: array (1..NA) of Tipo_A; o Con paso de parámetros Task type Tipo_A (Parametro : Natural); Task body tipo_A is Begin -- codigo Put(Parametro); --ejemplo End Tipo_A; Independientemente: punteros a tareas (arranquedinámico) Idea: Crear variable cuando sea necesario. Type Tipo_Punt_A is Access Tipo_A; Una_Tarea : Tipo_punt_A; Begin Una_Tarea := new Tipo_A(3); End;
-
®Rubén Gallego Fernández. Programación Concurrente. Examen Septiembre 2009®
-
Excepciones:
Las excepciones en ADA no se propagan fuera de las tareas Resultados inesperados Programa no termina Capturar excepciones en lastareas.
Tema3: Secciones críticas y exclusión mutua.
Conceptos previos: Los algoritmos de exclusión mutua (mutex de mutual exclusion) se usan en programación concurrente para evitar que fragmentos de código conocidos como secciones críticas (solo una tarea a la vez) sean accedidos al mismo tiempo a recursos que no deben ser compartidos.
Sección crítica: Soluciones: Hardware: Instruccionestest-and-set y swap Software: algoritmos exclusión mutua y soporte del S.O
Ejemplos de intentos de exclusión mutua: Primer Ejemplo. type Tipo_Turno is (Derecha, Izquierda); Turno : Tipo_Turno := Derecha; loop loop while (Turno /= Derecha) loop while (Turno /= Izquierda) loop null; null; end loop; end loop; …. … Turno := Izquierda; Turno := Derecha; end loop; end loop; Propiedades: Se consigueexclusion mutua. No hay interbloqueos (deadlock) No hay inanición (starvation) Problemas de diseño: - Cadencia de ejecución. - Terminación( si la montaña de uno de los trenes tiene mas perímetro que la del otro y la velocidad de ambos es igual, entonces dicho tren tarda mas en volver)
®Rubén Gallego Fernández. Programación Concurrente. Examen Septiembre 2009®
Segundo Ejemplo. Entra_dcho :Boolean := False; Entra_izq : Boolean := False; loop while Entra_Dcho loop null; end loop; Entra_Izq := True; …. Entra_Izq := False; end loop; Loop while Entra_izq loop null; end loop; Entra_Dcho := True; … Entra_Dcho := False; end loop;
Propiedades: No hay exclusión mutua (se puede dar el caso en el que ambos procesos pasen el while (entra_izq y entra_dcho ambos = true) y entonces no se cumpla...
Regístrate para leer el documento completo.