18/11/09
Programmation Parallèle
Cours de programmation parallèle présenté par Jacques Gispert à la Faculté des Sciences de Marseille-Luminy.
Ce cours est conçu pour des lecteurs n'ayant aucune notion préalable de la programmation parallèle (bien que la programmation séquentielle habituelle doive être connue). Les lecteurs plus avertis pourront ignorer le début du cours.
Il est composé de deux parties, la première concernant des machines centralisées, la seconde concernant des réseaux (programmation répartie).
Plan
Première partie : Architecture centralisée
CHAPITRE 1
I- Définitions et principesDéfinition de la Programmation Parallèle, et intérêtII- Historique et instructions machines
Machines mono ou multiprocesseur utilisées
Ressources et Processus (définitions)
Coopération et Concurence
Etat des processus, machine virtuelle, accès aux ressources
Exclusion mutuelleExclusion mutuelle programmée avec des instructions normalesIII- Programmes types
Algorithme de Dekker
Algorithme de Peterson
Dispositifs cablés : TAS, verrou, sémaphores
Sémaphores : précautions d'emploi, utilisation, sémaphores privés
Sémaphores privés et d'exclusion mutuelleLe Producteur et le Consommateur
Les Philosophes et les Spaghettis
Les Philosophes : Programme
CHAPITRE 2
I- Expression abstraite d'un problèmeVariables d'état, choix des variablesII - Programmation par régions critiques
Compteurs d'événements
Expression abstraite
Langages pour le parallélisme
Définition
Application au modèle du Producteur et du Consommateur
Les philosophes (Animation)III - Programmation par moniteurs
Structure d'un programmeIV - Programmation par rendez-vous
Les philosophesLangage Ada
Attente conditionnelle
Attente non déterministe
Exemple : gestion d'une piscine
CHAPITRE 3
I- Parallélisme en JavaChoix du langage
Quelques éléments de Java
Formalisme Java
Passage de paramètres
Arrêt d'une thread
Synchronisation des threads
Ordonnancement
Autres méthodes
Application
Traduction Régions critiques vers java
CHAPITRE 4
I - Le modèle Gamma
Définition
Exemple : calcul des nombres premiers
Exemple : les philosophesII - Langages CSP et OCCAM
Langage CSP
Logique de Hoare
Présentation du langage
Exemple 1 : somme des éléments d'un tableau
Exemple 2 : calcul de !n
Langage OCCAM
Champ d'applicationIII - Réseaux de Petri
Deuxième partie : Architecture répartie
CHAPITRE 5
I - Le contexte
Fonctions des réseaux
Modèle ISO et maillage
Réseau matériel
Définitions
ExemplesII - Principes de programmation répartie
Répartition contrôle/données
Différences centralisé/réparti
Forme des programmes répartis
Chronologie
Types de contrôles
Méthodes de répartition
CHAPITRE 6
I - Ordre des événements
II - Exclusion mutuelle
Définition
Circulation d'un privilège
Algorithme de Le Lann
Algorithme de Misra 83
Algorithme de Hehner-Shyamasundar
Distribution d'une file d'attente
Election
Détection de la terminaison
Interblocage
Interblocage dû aux messages
CHAPITRE 7
I - Répartition des données
Types de répartitions
Cohérence
Maintien de la cohérence
Programmation du maintien
Récupération de la cohérence
Cohérence forte
Cohérence faible
Protocole PARII - Divers types d'algorithmes
Structuration d'un réseau
Synchronisation par phases
Routage optimal
Arborescente couvrante
Algorithme du mot circulant
CHAPITRE 8
I - Généralisation
Internet
Migration d'un programme
Différents modèles
Sécurité
Accès à la machine hôte
Modèle par messages
Appel de procédure à distance
CORBA
CHAPITRE 9
I - Agents mobiles
Les Travaux Dirigés
Ennoncés des exercices en format rtf.
Les annales
Annales des examens en format rtf.