Software para arquitecturas basadas en procesadores de múltiples núcleos : detección automática de errores de concurrencia - Frati, Fernando Emmanuel; De Giusti, Armando Eduardo; Naiouf, Ricardo Marcelo; Olcoz Herrero, Katzalín; Piñuel Moreno, Luis (2015)
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
Tesis (Doctorado en Ciencias Informáticas) - Universidad Nacional de La Plata. Facultad de Informática, 2015.
Keywords: ARQUITECTURA DE SOFTWARE; PROGRAMACIÓN CONCURRENTE; ARQUITECTURAS MULTICORE; SISTEMAS CONCURRENTES