Master 1 informatique - Semestre 1 - Année 2020-2021
Responsable: Rémi MORIN: remi.morin(at)univ-amu.fr
Sites web:
http://remi.morin.myspace.luminy.univ-amu.fr/I2/POC
https://pageperso.lis-lab.fr/remi.morin/I2/POC
Motivations
Depuis la généralisation des architectures multi-coeurs, la programmation
parallèle est devenue incontournable pour développer des applications
exploitant pleinement les capacités de traitement offertes par les ordinateurs
actuels.
Elle est aussi un moyen de simplifier la structure du logiciel en
l'organisant sous la forme de tâches distinctes qui interagissent
entre elles afin de répondre aux requêtes de l'utilisateur (ou de l'environnement).
Cette UE présente aux étudiants du M1 les principales difficultés
de la programmation multi-thread et les techniques classiques permettant
de développer un code correct et performant.
Tout d'abord, les instructions de base liées à la classe Thread en Java
sont introduites avec les concepts sous-jacents de verrou et
de variable de condition.
L'effet de ces instructions sur l'état d'un thread est illustré sur
des exemples simples s'appuyant sur des diagrammes de séquence.
Les notions d'indépendance et d'atomicité permettent ensuite de spécifier
précisément les problèmes classiques de synchronisation en séparant
le besoin d'exclusion mutuelle des contraintes d'attente particulières.
L'approche recommandée pour débuter est celle
de la conception et de la programmation de moniteurs (à la Hoare),
étudiée sur quelques exemples classiques.
Les outils dédiés à la programmation parallèle en Java sont également présentés
en cours et exploités en Travaux Pratiques:
locks divers, pools de threads, collections synchronisées ou concurrentes,
objets atomiques, etc.
Les difficultés propres à la programmation sans verrou sont abordées par une approche systématique illustrée sur quelques exemples simples.
Enfin, un aperçu du modèle mémoire Java permet d'initier les étudiants à la
notion de programme «bien synchronisé» et aux risques d'exécutions
inconsistantes séquentiellement du fait des optimisations de codes réalisées
lors de la compilation ou de l'exécution.
Organisation
Le module consiste en
10h de cours,
8h de TD
et 8h de TP.
Un petit projet sous la forme de rendus de TP compte pour 25 % dans la note finale (MCC)
Le polycopié du cours, les planches d'exercices et les fichiers sources des Travaux Pratiques sont disponibles ici (accès restreint).
Progression
Références bibliographiques