Software para arquitecturas basadas en procesadores de múltiples núcleos : detección automática de errores de concurrencia

Detalles Bibliográficos
Autor Principal: Frati, Fernando Emmanuel
Otros autores o Colaboradores: De Giusti, Armando Eduardo (Director/a), Naiouf, Ricardo Marcelo (Codirector/a), Olcoz Herrero, Katzalín (Codirector/a), Piñuel Moreno, Luis (Asesor/a científico/a)
Formato: Tesis
Lengua:español
Datos de publicación: 2015
Temas:
Acceso en línea:http://catalogo.info.unlp.edu.ar/meran/getDocument.pl?id=1201
Consultar en el Cátalogo
Descripción Física:149 p. : il. + 1 CD-ROM
Tabla de Contenidos:
  • 1. Introducción
  • 1.1. Fundamentación
  • 1.2. Objetivos y metodología
  • 1.3. Contribuciones
  • 1.4. Organización de la tesis
  • 2. Marco teórico: errores de programación
  • 2.1. Introducción
  • 2.2. Depuración de programas secuenciales
  • 2.3. Programas concurrentes
  • 2.4. Errores de concurrencia
  • 2.4.1. Condiciones de carrera
  • 2.4.2. Deadlock
  • 2.4.3. Violación de orden
  • 2.4.4. Violación de atomicidad simple
  • 2.4.5. Violación de atomicidad multivariable
  • 2.4.6. ¿Qué tan frecuentes son estos errores
  • 2.5. Resumen
  • 3. Caso de estudio: detección de violaciones de atomicidad
  • 3.1. Introducción
  • 3.2. Antecedentes
  • 3.3. Método de análisis de interleavings
  • 3.4. Implementación de AVIO
  • 3.5. Resultados experimentales del capítulo
  • 3.5.1. Plataforma de experimentación
  • 3.5.2. Benchmarks
  • 3.5.3. Capacidad de Detección de Errores
  • 3.5.4. Análisis de Rendimiento
  • 3.6. Resumen
  • 4. Definición del problema
  • 4.1. Introducción
  • 4.2. Ejecución de programas concurrentes
  • 4.2.1. Soporte hardware
  • 4.2.2. Soporte software
  • 4.2.3. Modelo de ejecución
  • 4.3. Implementación de algoritmos de detección
  • 4.3.1. Instrumentación
  • 4.3.2. Extensiones hardware
  • 4.4. Oportunidades de optimización
  • 4.4.1. Overhead causado por la instrumentación
  • 4.4.2. Hipótesis
  • 4.5. Resumen
  • 5. Eventos de hardware
  • 5.1. Introducción
  • 5.2. Contadores hardware
  • 5.2.1. Soporte hardware
  • 5.2.2. Soporte software
  • 5.3. Uso de los contadores
  • 5.4. Identificar el evento que se desea detectar
  • 5.4.1. Protocolo de coherencia cache
  • 5.5. Microbenchmarks representativos de eventos
  • 5.6. Resultados experimentales del capítulo
  • 5.6.1. Validación del evento candidato
  • 5.6.2. Indicador de accesos inseguros
  • 5.6.3. Patrones de accesos a datos compartidos
  • 5.6.4. Frecuencia y distribución de interleavings no serializables
  • 5.7. Resumen
  • 6. Instrumentación dinámica guiada por eventos
  • 6.1. Introducción
  • 6.2. Muestreo de eventos
  • 6.3. Modelo Simple
  • 6.4. Modelo para aplicaciones paralelas
  • 6.4.1. Gestor de Interrupciones (GI)
  • 6.4.2. Programa Objeto de Estudio (POE)
  • 6.5. Modelo de Instrumentación Dinámica Guiado por Eventos
  • 6.5.1. Activado de la rutina de análisis
  • 6.5.2. Desactivado de la rutina de análisis
  • 6.5.3. Aspectos de diseño
  • 6.6. Resumen
  • 7. Experimentación y resultados obtenidos
  • 7.1. Introducción
  • 7.2. AVIO Consciente de Compartición
  • 7.2.1. Detalles de implementación
  • 7.3. Configuración experimental
  • 7.3.1. Elección de un intervalo de muestreo óptimo
  • 7.4. Rendimiento
  • 7.5. Capacidad de detección
  • 7.5.1. Prueba de detección en los kernels
  • 7.5.2. Prueba de detección en aplicaciones reales
  • 7.5.3. Comparación de bugs informados entre AVIO y AVIO-SA
  • 7.6. Discusión
  • 7.6.1. Interleavings detectados como criterio de comparación
  • 7.6.2. Comparación basada en re-ejecución
  • 7.7. Resumen
  • 8. Conclusiones y Líneas de Trabajo Futuras
  • 8.1. Líneas futuras
  • Apéndices
  • A. Detección de condiciones de carrera
  • A.1. Happens before
  • A.2. Lockset
  • B. Benchmaks
  • B.1. Introducción
  • B.1.1. Benchmarks para evaluar capacidad de detección
  • B.1.2. Benchmarks para desempeño
  • C. SPLASH-2: distribución de eventos
  • C.1. Introducción
  • D. SPLASH-2: distribución de interleavings
  • D.1. Introducción
  • E. Apache
  • E.1. Introducción
  • E.2. Compilación e instalación
  • E.3. Configuración
  • E.4. Ejecución