1. Processus
    1. programme en cours d'exécution
    2. contient
      1. espace d'adressage
        1. code
        2. données
      2. ressources système
      3. fil de contrôle
    3. unité d'allocation
      1. mémoire
      2. ressources
        1. descripteurs de fichiers
        2. entrées-sorties
  2. Threads
    1. unité d'ordonnancement
      1. permet concurrence
      2. au sein d'un processus
    2. applications
      1. côté serveur
        1. threads statiques
          1. serveur de terminaux
        2. threads dynamiques
          1. serveur de fichiers
      2. côté client
        1. requêtes
        2. concurrentes
        3. asynchrones
    3. nécessaires
      1. multicœurs
        1. "many-cores"
    4. implémentation
      1. mode noyau
        1. opérations = appels système
        2. +
          1. ordonnancement facile
          2. recouvrement E/S
          3. gestion des événements
        3. -
          1. portabilité
          2. efficacité
          3. abstraction à 2 niveaux - visible
      2. mode utilisateur
        1. bibliothèque
        2. +
          1. changement de contexte très rapide
          2. contrôle de l'ordonnancement
          3. portabilité
        3. -
          1. blocage d'un thread bloque processus
          2. oronnancement threads invisible de l'OS
      3. combinaison ?
        1. fibres
        2. threads noyau
        3. threads matériels
    5. ordonnancement
      1. quantum de temps
        1. qq ms à qq 10s ms
      2. préemptif ou non ?
      3. noyau ou espace utilisateur ?
  3. Mémoire virtuellement partagée
    1. propriétés fondamentales
      1. architecture NUMA
      2. abstraction de partage d'information
      3. données internes au processus
    2. consistence
      1. n'a de sens que relativement à un modèle
      2. accès généraux lectures/écritures
        1. consistence atomique
          1. toutes opérations apparaissent
          2. atomiques
          3. séquentielles
          4. ordre correspond au temps-réel
          5. même sur tous processeurs
          6. très coûteux
        2. consistence séquentielle
          1. relâche contrainte temps réel
          2. écriture = multicast
        3. consistence causale
          1. relâche contrainte ordre identique sur tous processeurs
          2. garantit seulement causalité
          3. écriture = envoi
          4. lecture = réception
        4. consistence de processeur
          1. seules écritures venant d'un même processeur doivent être vues dans le même ordre
          2. implémentation facile
        5. consistence de mémoire lente
          1. seules écritures par même processeur à même @ doivent être vues dans l'ordre
          2. mise à jour locale visible immédiatement
          3. propagation lente
      3. accès spécifiques (de synchronisation)
        1. protection par sémaphore
          1. exclusion mutuelle
          2. demande intervention programmeur
        2. consistence faible
          1. barrière de synchronisation
        3. consistence de relâchement
          1. accès exclusif entre
          2. aquisition (S)
          3. relâchement (S)
          4. section critique
        4. consistence d'entrée
          1. chaque variable partagée
          2. est associée à une variable de synchronisation
    3. réplication
      1. voir cours sur tolérance aux pannes
    4. classification
      1. implémentation
        1. logiciel
        2. matériel
          1. accès direct à la mémoire distante
        3. hybride
      2. organisation des données
        1. non-structurées
        2. structurées
          1. objets
          2. structures de données
      3. granularité
        1. mot
        2. bloc de cache
        3. page
        4. structure de données
        5. objet
      4. modèle de consistence
      5. protocole de cohérence
        1. écrire invalide
        2. écrire met à jour
      6. responsabilité de gestion
        1. centralisée
        2. distribuée
          1. statique
          2. dynamique
    5. facteurs de performance
      1. granularité
      2. surcoût de transfert d'un bloc
      3. rapport lectures/écritures
      4. localité du programme
  4. tendance dans langages pour la haute performance
    1. Partitionned Global Address Space
      1. High End Computing
      2. vers plus de productivité
    2. adaptation de la mémoire virtuellement partagée
      1. affinité entre régions mémoire et threads
      2. accès explicite aux autres régions mémoire
      3. distribution explicite
        1. données
        2. calculs
      4. synchronisation
        1. barrières
        2. sections critiques
        3. cohérence mémoire
      5. PGAS_Tutorial_sc2003.pdf
      6. Yelick.pdf
    3. langages
      1. Co-array Fortran
        1. considéré pour standard Fortran 2008
      2. Unified Parallel C
      3. Titanium
        1. basé sur Java
      4. X10 (IBM)
        1. basé sur Java
        2. extension à l'inférence de type
        3. plusieurs styles de programmation
          1. vue globale
          2. OpenMP
          3. MPI
          4. OpenMP+MPI
        4. X10Cluster2009.pdf