L’actualité de l’OAMP
Sommaire

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 principes
  Définition de la Programmation Parallèle, et intérêt
  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 mutuelle
 II- Historique et instructions machines
  Exclusion mutuelle programmée avec des instructions normales
  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 mutuelle
 III- Programmes types
  Le Producteur et le Consommateur
  Les Philosophes et les Spaghettis
  Les Philosophes : Programme

CHAPITRE 2

 I- Expression abstraite d'un problème
 Variables d'état, choix des variables
Compteurs d'événements
Expression abstraite
Langages pour le parallélisme
 II - Programmation par régions critiques
Définition
Application au modèle du Producteur et du Consommateur
Les philosophes (Animation)

 III - Programmation par moniteurs

Structure d'un programme
Les philosophes
IV - Programmation par rendez-vous
Langage Ada
Attente conditionnelle
Attente non déterministe
Exemple : gestion d'une piscine

CHAPITRE 3

 I- Parallélisme en Java
 Choix 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 philosophes

II - 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'application

III - Réseaux de Petri

Définition
Le modèle du Producteur et du Consommateur

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
Exemples

II - 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

Ordre partiel
Causalité
Ordre total

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 PAR

II - 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.