Descriptif
Le cours abordera la conception d'applications concurrente : modèles de concurrence, politiques d'ordonnancement, mécanismes de synchronisation. Ces concepts seront illustrés par la mise en œuvre de l'interface de programmation C/POSIX et par celle du modèle objet Java. Le cours portera également sur des patrons de conception pour la programmation concurrente ainsi que la vérification d'applications concurrentes.
Objectifs pédagogiques
Comprendre des modèles de mémoire bas niveau (ordre, cohérence, opérations atomiques).
Comprendre des mécanismes de synchronisation haut niveau (POSIX, Java, Acteurs)..
Appliquer des patrons de conception dans le contecte de la programmation concurrentes
Raisonner sur les caractéristiques de programmes concurrents.
effectifs minimal / maximal:
10/25Diplôme(s) concerné(s)
Format des notes
Numérique sur 20Pour les étudiants du diplôme Systèmes embarqués
Vos modalités d'acquisition :
Contrôle écrit, contrôle continu (quiz, mini projet)
L'UE est acquise si Note finale >= 10- Crédits ECTS acquis : 2.5 ECTS
Programme détaillé
Cours : Introduction (formes de concurrence)
TP : parallélisme d'instructions/données
Cours : Mémoire partagée (modèle mémoire, cohérence, opérations atomiques)
TP : Modèle mémoire de C/C++11
Cours : Programmation concurrente en C (POSIX)
TP : Mécanismes de synchronisation sous POSIX
Cours : Programmation concurrente en Java (threads, monitors)
TP : Mécanismes de synchronisation sous Java
Cours : Mémoire distribuée (sockets, RMI, RPC, MPI)
TP : Synchronisation distribuée
Cours : Patrons et algorithmes distribués (horloges, ordre des événements, causalité)
TP : Algorithmes distribués
Cours : Le modelé d’acteur (introduction)
TP : Acteurs dans Akka (Java)
Cours : Mémoire transactionnelle (introduction)
Contrôle de connaissance