Software para arquitecturas basadas en procesadores de múltiples núcleos : detección automática de errores de concurrencia
Autor Principal: | |
---|---|
Otros autores o Colaboradores: | , , , |
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