Sécurité de la mémoire pour la programmation réactive synchrone
Auteur / Autrice : | Darine Rammal |
Direction : | Pierre Réty |
Type : | Thèse de doctorat |
Discipline(s) : | Informatique |
Date : | Soutenance le 19/01/2024 |
Etablissement(s) : | Orléans |
Ecole(s) doctorale(s) : | École doctorale Mathématiques, Informatique, Physique Théorique et Ingénierie des Systèmes (Centre-Val de Loire ; 2012-....) |
Partenaire(s) de recherche : | Laboratoire : Laboratoire d'informatique fondamentale d'Orléans (Orléans ; 1987-....) |
Jury : | Président / Présidente : Abdelmalek Benzekri |
Examinateurs / Examinatrices : Wadoud Bousdira, Frédéric Loulergue, Frédéric Gava | |
Rapporteurs / Rapporteuses : Julien Signoles, Fabrice Mourlin |
Mots clés
Mots clés contrôlés
Résumé
Les langages réactifs synchrones constituent un excellent choix pour la programmation de l'IoT en raison de leur sémantique claire pour l'interaction entre le système et l'environnement. Cependant, en ce qui concerne les systèmes critiques en termes de sécurité ou contraints en ressources, des propositions récentes telles que Fairthreads ou ReactiveML font face à un problème bien connu. La gestion manuelle de la mémoire de Fairthreads peut entraîner des erreurs, tandis que la collecte des déchets de ReactiveML assure la sécurité de la mémoire mais introduit une surcharge d'exécution. Cette thèse vise à résoudre le problème de la sécurité de la mémoire en développant un langage de programmation réactif spécifiquement conçu pour les systèmes en temps réel, intégrant des threads coopératifs et une exécution synchrone. En nous appuyant sur le solide système de types du langage de programmation Rust, nous proposons un système de types similaire à Rust pour un langage de programmation réactif de noyau appelé MSSL. MSSL offre un modèle de threads coopératifs et facilite le partage de données mutables entre les threads tout en préservant la sécurité des types et des emprunts. Pour y parvenir, nous introduisons une nouvelle abstraction appelée Trc (Thread Reference Counting), qui combine la sécurité de propriété des références de Rust avec le mécanisme de comptage de références des pointeurs intelligents de Rust. Nous présentons ensuite la sémantique et le système de types de MSSL pour démontrer ses capacités à maintenir la sécurité des types, la sécurité des emprunts et la sécurité de la concurrence. De plus, nous étendons MSSL en introduisant des extensions réactives, en intégrant le concept de signaux qui offrent des moyens de communication puissants, flexibles et fiables. Enfin, nous fournissons une implémentation en Java de l'ensemble complet de MSSL, en basant sur la sémantique et les règles de typage de son système de types.