Publication:
Static analysis of concurrent objects: May-Happen-in-Parallel fo asynchronous programs with Inter-procedural synchronization

Loading...
Thumbnail Image
Official URL
Full text at PDC
Publication Date
2015
Editors
Journal Title
Journal ISSN
Volume Title
Publisher
Citations
Google Scholar
Research Projects
Organizational Units
Journal Issue
Abstract
This work presents a may-happen-in-parallel analysis with inter-procedural synchronization for languages based in concurrent objects. In this model of concurrency (based on actors) the objects are the concurrency units. The idea behind it is that each object has its own processor. A may-happen-inparallel (MHP) analysis computes pairs of program points that may execute in parallel across different distributed components. This information has been proven to be essential to infer both safety properties (e.g., deadlock freedom) and liveness properties (termination and resource boundedness) of asynchronous programs. Existing MHP analyses take advantage of the synchronization points to learn that one task has finished and thus will not happen in parallel with other tasks that are still active. Our starting point is an existing MHP analysis developed for intra-procedural synchronization, i.e., it only allows synchronizing with tasks that have been spawned inside the current task. This paper leverages such MHP analysis to handle inter-procedural synchronization, i.e., a task spawned by one task can be awaited within a different task. This is challenging because task synchronization goes beyond the boundaries of methods, and thus the inference of MHP relations requires novel extensions to capture inter- procedural dependencies. We can distinguish diferent phases in the development of the analysis: (1) The first one where MHF analysis is performed to infer the relations of synchronization that exist between the methods, (2) a second local phase to analyze each method separately and (3) a last phase to composed all information. As the problem is undecidable when considering a full concurrent objects programming language, the analysis over-approximates the real parallelism programs. Finally, the implementation of the analysis has been integrated in SACO, a static analyzer of concurrent programs. The main technical results [5] have been selected to be published in the proceedings of Static Analysis Symposium 2015: http://sas2015.inria.fr. It is the main conference on static analysis (classified as category A in the international ranking CORE).
Este trabajo presenta un análisis may-happen-in-parallel (puede-ocurrir-enparalelo) con sincronización interprocedimental para lenguajes basados en objetos concurrentes. En este modelo de concurrencia (basado en actores) los objetos son las unidades concurrentes de tal manera que cada objeto es como si tuviese su propio procesador. Un análisis may-happen-in-parallel (MHP) infiere los pares de puntos del programa cuyas instrucciones pueden ejecutarse en paralelo sobre diferentes componentes distribuidas. Esta información ha resultado ser esencial para inferir propiedades de completitud (por ejemplo la ausencia de bloqueos) y propiedades de viveza (terminación y consumo de recursos) de programas asíncronos. Los análisis MHP existentes aprovechan los puntos de sincronización para saber que una tarea ha finalizado y que no será ejecutada en paralelo con otras tareas que se encuentren todavía activas. Nuestro punto de partida es un análisis MHP desarrollado para sincronización intraprocedimental, es decir, solo permite la sincronización con tareas que han sido generadas dentro del método actual. El objetivo del presente trabajo es que este análisis MHP soporte sincronización interprocedimental, esto es, una tarea generada por otra pueda ser sincronizada (esperada) dentro de otra tarea distinta. Este reto resulta complejo debido a que la sincronización de tareas va más allá de los entornos de los métodos y por tanto las relaciones para inferir esta información requieren de nuevas extensiones para poder capturar las dependencias entre procesos. En nuestra propuesta se pueden distinguir distintas fases: (1) Una primera donde se lleva a cabo un análisis must-have-finished (debe-haber acabado) mediante el cual se infieren las relaciones de sincronización existentes entre las distintas tareas, (2) una segunda fase local en la que se analiza cada método por separado utilizando la información anteriormente obtenida y (3) una última fase global donde componer todo. Puesto que el problema es indecidible cuando consideramos un lenguage de programación basado en objetos completo, el análisis calcula una sobreaproximación del paralelismo real de programas concurrentes. Por último también se ha implementado el análisis incorporándolo en SACO, un analizador de programas concurrentes. Los principales resultados de este trabajo [5] serán publicados en el Simposio de Análisis Estático 2015: http://sas2015.inria.fr. Se trata del congreso más importante en el área de análisis estático (calificado como A en el ranking de congresos CORE).
Description
Trabajo de Fin de Grado en Ingeniería Informática (Universidad Complutense, Facultad de Informática, curso 2014/2015)
Keywords
Citation