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.