Programación concurrente

Solo disponible en BuenasTareas
  • Páginas : 15 (3682 palabras )
  • Descarga(s) : 0
  • Publicado : 19 de diciembre de 2011
Leer documento completo
Vista previa del texto
®Rubén Gallego Fernández. Programación Concurrente. Examen Septiembre 2009®

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...
tracking img