Static analysis of concurrent programs based on behavioral type systems
Analyse statique de programmes concurrents basés sur des systèmes de type comportemental
Résumé
Abstract : The strength of program static analysis techniques lies on its ability to de- tect faulty behaviors prior to the execution. This ability requires that the analysis process foresees any possible runtime scenario. A task which is even more complex in the case of concurrent programs, because of the number of alternatives introduced by the usual nondeterminism. In this particular case, some of the most common faulty behaviors are those about erroneous usage of resources, presence of deadlocks and data race conflicts. Behavioral type systems for programming languages provide a strong mechanism for reasoning on programs actions at static time. In this the- sis we discuss two static analysis techniques based on this approach. The first one, targets the resource usage in an ad-hoc language with full-fledged operations for acquiring and releasing virtual machines. The second one, targets the deadlock analysis of Java programs. In both cases we provide a formal proof of correctness, along with pro- totype implementations that allow practically to test the feasibility of these solutions. These prototypes have also allowed assessing these techniques against others existing in the literature obtaining very encouraging results.
La force des techniques d'analyse statique du programme repose sur sa capacité à détecter les comportements défectueux avant l'exécution. Cette capacité nécessite que le processus d'analyse prévoie tout scénario d'exécution possible. Une tâche encore plus complexe dans le cas des programmes concurrents, à cause du nombre d'alternatives introduites par le non-déterminisme habituel. Dans ce cas particulier, certains des comportements erronés les plus courants sont ceux concernant l'utilisation erronée des ressources, la présence d'interblocages et les conflits de course de données. Les systèmes de type comportemental pour les langages de programmation fournissent un mécanisme fort pour raisonner sur les actions des programmes à l'heure statique. Dans cette thèse, nous discutons de deux techniques d'analyse statique basées sur cette approche. Le premier, cible l'utilisation des ressources dans un langage ad-hoc avec des opérations à part entière pour acquérir et libérer des machines virtuelles. Le second, cible l'analyse de blocage des programmes Java. Dans les deux cas, nous fournissons une preuve formelle d'exactitude, ainsi que des implémentations de prototypes qui permettent pratiquement de tester la faisabilité de ces solutions. Ces prototypes ont également permis d'évaluer ces techniques par rapport à d'autres existantes dans la littérature en obtenant des résultats très encourageants.
Origine | Fichiers produits par l'(les) auteur(s) |
---|
Loading...