Conception et programmation Programmation Parallèle

Slides:



Advertisements
Présentations similaires
GEF 435 Principes des systèmes d’exploitation
Advertisements

Synchronisation de Processus
Formation universitaire à .NET: Introduction à C#
Synchronisation des processus père - fils
Responsables : Joël Falcou et Jean-Thierry Lapresté
Module Systèmes d’exploitation
Module Systèmes dexploitation Chapitre 6 Communication Interprocessus Partie III École Normale Supérieure Tétouan Département Informatique
Systèmes en temps réel Modélisation du comportement en temps réel avec UML.
GEF 435 Principes des systèmes d’exploitations
Systèmes en temps réel Services de Communication.
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) II (Tanenbaum 2.3)
GEF 435 Principes des systèmes dexploitation Communication Interprocessus (CIP) III (Tanenbaum 2.3)
TP 7.1 synchronized et join Écrire un programme Java qui crée 1000 threads et maintient un compteur nb du nombre de threads créés jusque-là. Le thread.
PLAN du COURS Introduction Structure des Systèmes Informatiques
Chapitre 3 Coopération et synchronisation par variables partagées
Exécutif Temps réel. Limitation des système classiques Rappels Mise en œuvre lourde des communications entre processus Problème de prédictibilité avec.
C.
Présentation Création
Introduction aux systèmes temps réel Ce cours sadresse aux informaticiens novices en matière de temps réel.
Mémoire & Processus Cours SE - SRC
Paramètres et pointeurs
ESIEE Paris © Denis BUREAU I N Initiation à la programmation avec le langage Java.
Diagrammes de communication
Parallel Programming in C with MPI and OpenMP
Système d’Exploitation
PARTIE 3 : Le SYSTEME D’INFORMATION FUTUR
Common Gateway Interface
44 Contrôle du déroulement du programme. 4-2 Objectifs A la fin de ce cours, vous serez capables de : Utiliser les constructions de prise de décision.
Rappel sur la synchronisation des processus
Concepts de base : la Classe Pour faire une comparaison simple, une classe serait a priori, une structure C avec des variables et des fonctions.
Synchronisation et communication entre processus
1 Threads et Lightweight Processes Chapitre 5 En français on utilise parfois flots ou fils pour threads. Votre manuel préfère le mot anglais thread : terminologie.
Introduction au paradigme objet Concepts importants surcharge (overload) redéfinition (override) Définition d’une classe Définition des attributs.
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
66 Utilisation des classes et des objets. 6-2 Objectifs A la fin de ce cours, vous serez capables de : Créer de nouvelles classes à laide de Eclipse Utiliser.
Programmation concurrente
1 Module 3 - Fils (Threads) Lecture: Chapitre 4 Objectif: Comprendre le concept de fils et sa relation avec le processus Comprendre le concept de fils.
Parallelisme (Basé sur Concepts of Programming Languages, 8th edition, by Robert W. Sebesta, 2007)
PROGRAMMATION MULTI-TÂCHES (MULTITHREADING)
Parallel Programming in C with MPI and OpenMP
Chapitre 9 Les sous-programmes.
Chapitre 7 continuation
Cours 11 Threads. Chapitre X threads threadPOO-L3 H. Fauconnier3 Threads threads: plusieurs activités qui coexistent et partagent des données exemples:
CSI1502 Principes fondamentaux en conception des logiciels
Le diagramme de séquences
Programme de baccalauréat en informatique Programmation Orientée Objets IFT Thierry EUDE Module 6. Gestion des erreurs et des exceptions : Fonctionnement.
Synchronisation Classique
La notion de type revisitée en POO
Module 8 : Surveillance des performances de SQL Server
Gestion de processus Corrigé TD 1 EFREI I
Travailler avec des processus
Structures de données avancées : Concepts réseaux et protocole de communication. D. E ZEGOUR Institut National d ’Informatique.
Programmation objet La base.
Interactions entre Processus
1 Extension du modèle de composants CORBA avec accès concurrent à des données partagées Travail réalisé par : Landry BREUIL PFE, ISIMA Encadrants : Gabriel.
La programmation système
Programmation Système et Réseau
Les sockets.
François CARCENAC,Frédéric BONIOL ONERA-DTIM Zoubir MAMMERI IRIT
IFT 232 Méthodes de Conception Orientées Objets Introduction.
Cours 4 (14 octobre) Héritage. Chapitre III Héritage.
Processus Légers. Rappel sur le fork() fork() Processus 1 Pile Data Text Processus 2 Pile Data Text.
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Conception de Programmes - IUT de Paris - 1ère année Conception de Programmes Objectifs et organisation du cours Introduction à la P.O.O.
Chapitre VII Techniques plus avancées à travers le concept de classe.
Les Processus.
Systèmes d’exploitation Processus conclusion Modèle conceptuel de processus Pour masquer les effets des interruptions, les SE fournissent un modèle conceptuel.
Algorithmes parallèles
Gestion des Tâches Les Processus. Un système multitâches La carte mère comporte Le Processeur (calcul et attente) Les jeux de composants spécialisés (entrées-sorties.
1 UNIX AVANCE Yves PAGNOTTE – Janvier – LES PROCESSUS SOUS UNIX.
Transcription de la présentation:

Conception et programmation Programmation Parallèle TC1- CPPOO 96h - 9 Ects Matière 2:4,5 Ects Conception et programmation Orientée-objet 12h cours -14h TD -12h TP Matière 1: 4,5 Ects Programmation Parallèle 16h cours -18h TD - 12h TP BE 12h TP CPOOP

TC1: Conception et programmation parallèle et orientée objet Volume horaire: 96h Répartition: Cours: 28h TD: 32h TP: 24h BE: 12h Objectif: Ce cours a pour but de présenter les concepts de base de la programmation orientée objet et parallèle. Ils sont illustrés à travers une démarche de développement et des applications de synthèse. Plan: 1. Conception et Programmation Orientée Objets - Concepts fondamentaux de la POO Rappels et compléments sur les concepts de la POO (classes, objets, héritage, polymorphisme, ...) - Conception Orientée Objets - Introduction au langage de modélisation UML - Démarche d'analyse et de conception - Schémas de conception - Mise en œuvre - Modélisation d'une application - Implantation avec Java 2. Programmation Parallèle - Expression des activités parallèles: processus et threads - Modèles de parallélisme: synchrone, asynchrone - Mécanismes de communication et de synchronisation - variables partagées, envoi de messages - verrou, sémaphore, moniteur, rendez-vous - Problèmes et applications - Exclusion mutuelle - Allocation de ressources - Schéma producteur-consommateur, lecteur-rédacteur, ... - Eléments de spécification et de vérification - Mise en œuvre (UNIX et Java) 3. Travaux de synthèse - Réalisation d'objets synchronisés - Etude et réalisation d'interfaces graphiques Cette partie sera assurée dans le cadre de bureaux d'études et travaux-pratiques. Elle doit permettre de faire le lien entre les deux premières parties.

Programmation Parallèle Pourquoi ? Système complexe Exigence: Décomposition en activités « indépendantes » Matériel multiprocesseur réseaux monoprocesseur

Plateforme Centralisé Distribué Pseudo-parallélisme Parallélisme réel Monoprocesseur: UC réseaux Multiprocesseur: UC1..UCn S1 S2 S3 Sn P0 P1 ---- ---- ---- ---- ---- ---- MC Passage de contrôle

Expression du parallélisme Processus Définition utilisateur Programme en cours d’exécution Processus Pile du processus _ : Ad_SDonnées Ad_Code Définition système S_Données _ Descripteur identité état pcontexte : Ad_Code _

PRÊT BLOQUÉ ACTIF TERMINÉ États d’un processus Plusieurs processus Prêts attendent l’UC PRÊT BLOQUÉ ACTIF TERMINÉ Créé Allocation Préemption Attente Fin, destruction Le processus élu est choisit selon une politique de schedulling Selon implantations, sous-états possibles

Processus Unix S_Données_Père X 0 Pid Num_Fils S_Pile_Père S_Code Main() { int x, pid; x=0; pid = fork(); if (!pid) x=1; else x=2; } S_Données_fils X 0 Pid 0 S_Pile_Fils

Processus Unix S_Données_Père X 2 Pid Num_Fils S_Pile_Père S_Code Main() { int x, pid; x=0; pid = fork(); if (!pid) x=1; else x=2; } S_Données_fils X 1 Pid 0 S_Pile_Fils

Expression du parallélisme Thread « processus léger » Permettre à une activité parallèle contrairement aux processus de partager l’espace d’adressage avec d’autres S_Données_processus _ processus t1 t2 t3 tn

Un thread est crée, seulement, par un processus Un processus peut créer plusieurs threads Le processus père joue le rôle du processeur / à ses threads Les threads s’exécutent d’une façon général en multiprogrmmé Ils partagent le temps du processus père Le contrôle passe à un autre thread si le thread courant: se termine se bloque Lance une opération E/S D’autres politiques de schedulling sont possibles

PRÊT BLOQUÉ ACTIF TERMINÉ États d’un thread les threads Prêts attendent dans le processus PRÊT BLOQUÉ ACTIF TERMINÉ Créé Allocation Préemption Attente Fin, destruction Le thread élu est choisit selon une politique de schedulling. Il s’exécute quand le processus est actif Selon implantations, sous-états possibles

S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf(…) x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation d’un thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (…..); X--; X == 1

S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf(…) x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation d’un thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (…..); X--; X == 2

S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf(…) x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation d’un thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (…..); X--; X == 1

S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf(…) x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation d’un thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (…..); X--; X == 2

Exemple: Thread Unix Créer un thread int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); start_routine = fonction exécutée par le thread arg = argument de cette fonction attr = attributs optionnels de création thread = identificateur Toutes les ressources nécessaires au thread doivent avoir été initialisées. Erreurs possibles : EINVAL : attributs invalide EAGAIN : ressources insuffisantes

Autres opérations sur un thread int pthread_detach(pthread_t thread); Détacher un thread Erreurs : (EINVAL : thread non « joignable » ESRCH : thread invalide) pthread_t pthread_self(void); Retourne l’identificateur de l’appelant int pthread_yield(void); <sched.h>, TR Rend prêt l’appelant, élection nouveau thread Erreur : Retour -1 + errno ENOSYS : non supporté

Terminer un thread void pthread_exit(void *value_ptr); Terminaison de l’appelant value_ptr = valeur (non adr) de retour pour jointure int pthread_join(pthread_t thread, void **value_ptr); Attente de la terminaison d’un thread non détaché thread = identificateur du thread concerné value_ptr = valeur retournée (si non NULL) Erreurs : EINVAL : thread non « joignable » ESRCH : thread invalide (EDEADLK : join avec self) Exemple : create, exit/join

2 Modèles du parallélisme I- Modèle Synchrone Lustre Esterel Une seule horloge Flot de données A chaque top tous les processus s’activent Flot de contrôle exécution // entre 2 top Horloge interaction 0 P0 ---- P1 ---- Pn ---- t0 t1 t2 t3 t4

2 Modèles du parallélisme II- Modèle Asynchrone H0 H1 H2 ……. Hn Indépendance interaction 0

Quelques Problèmes Causes coopération Partage de ressources Synchrone Variables partagées Communication & Synchronisation Asynchrone Envoie de messages

Quelques Problèmes Propriétés Comportementales Sûreté Section Critique Exclusion Mutuelle Communication Synchrone Non Inter blocage Communication Asynchrone Attendre & Signaler un événement Diffuser un événement Allocation de Ressources Fichier Partagé Vivacité Pilote d’Entrée /Sortie Non Famine :::::::: Équité