PCO
Programmation concurrente
Connaissances préalables recommandées :
L’étudiant doit connaître et savoir utiliser les notions suivantes :
-
langage C ou C++: constituants d’un programme, types simples et structurés (tableau, enregistrement), structures de contrôle, sous-programmes, unités d'encapsulation, pointeurs.
-
pseudo-code, algorithmes de base sur des structures de données linéaires (listes, files,…).
Les unités d'enseignement INF1 et INF2 (informatique) et ASD1 (algorithmes et structures de données) permettent d'acquérir ces connaissances.
Objectifs :
A l'issue de cette unité d'enseignement, l'étudiant-e sera capable de :
-
situer le domaine de la programmation concurrente parmi les autres techniques de programmation existantes.
-
expliquer les notions de threads et de contexte d'exécution.
-
décrire le concept d’ordonnancement de threads (ordonnanceur, politique d'ordonnancement).
-
expliquer, concevoir et utiliser des threads POSIX et Windows.
-
expliquer les concepts d’exclusion mutuelle, de communication et de synchronisation entre threads.
-
analyser et expliquer le fonctionnement d'algorithmes permettant de partager des structures de données simples à l'aide d'instructions atomiques.
-
analyser et expliquer le fonctionnement d’un programme concurrent.
-
expliquer et utiliser la notion de sémaphore disponible sous POSIX et Windows.
-
expliquer et utiliser la notion de moniteur.
A l'issue des travaux pratiques en laboratoire, principalement destinés à l’assimilation des connaissances et à
l’acquisition d’expérience dans le développement d’applications concurrentes, l’étudiant-e sera en outre capable de :
-
implémenter un processus sous la forme de thread POSIX et Windows.
-
réaliser et utiliser des outils d’exclusion mutuelle et de synchronisation : verrous, sémaphores, moniteur.
-
simuler des outils de programmation concurrente.
-
exercer le test de programmes concurrents.
-
acquérir de l’expérience dans l’analyse de code, la détection et la correction d’erreurs de programmation concurrente.