matière 2:4,5 ects conception et programmation orientée-objet 12h cours -14h td -12h...

Click here to load reader

Post on 03-Apr-2015

107 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • Page 1
  • Matire 2:4,5 Ects Conception et programmation Oriente-objet 12h cours -14h TD -12h TP Matire 1: 4,5 Ects Programmation Parallle 16h cours -18h TD - 12h TP TC1- CPPOO 96h - 9 Ects BE 12h TP CPOOP
  • Page 2
  • TC1: Conception et programmation parallle et oriente objet Volume horaire: 96h Rpartition: Cours: 28h TD:32h TP:24h BE:12h Objectif: Ce cours a pour but de prsenter les concepts de base de la programmation oriente objet et parallle. Ils sont illustrs travers une dmarche de dveloppement et des applications de synthse. Plan: 1. Conception et Programmation Oriente Objets - Concepts fondamentaux de la POO Rappels et complments sur les concepts de la POO (classes, objets, hritage, polymorphisme,...) - Conception Oriente Objets - Introduction au langage de modlisation UML - Dmarche d'analyse et de conception - Schmas de conception - Mise en uvre - Modlisation d'une application - Implantation avec Java 2. Programmation Parallle - Expression des activits parallles: processus et threads - Modles de paralllisme: synchrone, asynchrone - Mcanismes de communication et de synchronisation - variables partages, envoi de messages - verrou, smaphore, moniteur, rendez-vous - Problmes et applications - Exclusion mutuelle - Allocation de ressources - Schma producteur-consommateur, lecteur-rdacteur,... - Elments de spcification et de vrification - Mise en uvre (UNIX et Java) 3. Travaux de synthse - Ralisation d'objets synchroniss - Etude et ralisation d'interfaces graphiques Cette partie sera assure dans le cadre de bureaux d'tudes et travaux-pratiques. Elle doit permettre de faire le lien entre les deux premires parties.
  • Page 3
  • Programmation Parallle Pourquoi ? Systme complexe Exigence: Dcomposition en activits indpendantes Matriel multiprocesseur rseaux monoprocesseur
  • Page 4
  • Plateforme Centralis Distribu Pseudo-paralllisme Paralllisme rel ---- Multiprocesseur: UC1..UCn Monoprocesseur: UC rseaux MC P0P1 Passage de contrle S1S2S3Sn ----
  • Page 5
  • Expression du paralllisme Processus Dfinition utilisateur Programme en cours dexcution Dfinition systme Descripteur identit tat pcontexte : Pile du processus _ : _ Ad_SDonnes Ad_Code S_Donnes _ Ad_Code _ Processus
  • Page 6
  • tats dun processus Selon implantations, sous-tats possibles PRT BLOQU ACTIF TERMIN Cr Allocation Premption Attente Fin, destruction Plusieurs processus Prts attendent lUC Le processus lu est choisit selon une politique de schedulling
  • Page 7
  • Processus Unix S_Donnes_Pre X 0 Pid Num_Fils S_Code S_Pile_Pre Main() { int x, pid; x=0; pid = fork(); if (!pid) x=1; else x=2; } S_Donnes_fils X 0 Pid 0 S_Pile_Fils
  • Page 8
  • Processus Unix S_Code S_Pile_Pre Main() { int x, pid; x=0; pid = fork(); if (!pid) x=1; else x=2; } S_Pile_Fils S_Donnes_fils X 1 Pid 0 S_Donnes_Pre X 2 Pid Num_Fils
  • Page 9
  • Thread processus lger Expression du paralllisme de partager lespace dadressage avec dautres Permettre une activit parallle contrairement aux processus processus t1t2t3tn S_Donnes_processus _
  • Page 10
  • Un thread est cre, seulement, par un processus Un processus peut crer plusieurs threads Les threads sexcutent dune faon gnral en multiprogrmm Ils partagent le temps du processus pre Le contrle passe un autre thread si le thread courant: se termine se bloque Lance une opration E/S Dautres politiques de schedulling sont possibles Le processus pre joue le rle du processeur / ses threads
  • Page 11
  • tats dun thread Selon implantations, sous-tats possibles PRT BLOQU ACTIF TERMIN Cr Allocation Premption Attente Fin, destruction les threads Prts attendent dans le processus Le thread lu est choisit selon une politique de schedulling. Il sexcute quand le processus est actif
  • Page 12
  • S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf() x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation dun thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (..); X--; } X == 1
  • Page 13
  • S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf() x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation dun thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (..); X--; } X == 2
  • Page 14
  • S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf() x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation dun thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (..); X--; } X == 1
  • Page 15
  • S_Code int x; /*-------------------------------------------------------------------------*/ void *traitementThread () { /*------------------------------------------------------------------------*/ int i; x++; printf() x++; } main() { int etat; int numThreads; pthread_t idThread; pthread_attr_t attribut; /* Creation dun thread */ x = 1; etat = pthread_create(&idThreads, &attribut, traitementThread, &numThreads); Printf (..); X--; } X == 2
  • Page 16
  • Crer un thread int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine)(void*), void *arg); start_routine = fonction excute par le thread arg = argument de cette fonction attr = attributs optionnels de cration thread = identificateur Toutes les ressources ncessaires au thread doivent avoir t initialises. Erreurs possibles : EINVAL : attributs invalide EAGAIN : ressources insuffisantes Exemple: Thread Unix
  • Page 17
  • Autres oprations sur un thread int pthread_detach(pthread_t thread); Dtacher 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);, TR Rend prt l appelant, lection nouveau thread Erreur : Retour -1 + errno ENOSYS : non support
  • Page 18
  • 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 dun thread non dtach thread = identificateur du thread concern value_ptr = valeur retourne (si non NULL) Erreurs : EINVAL : thread non joignable ESRCH : thread invalide (EDEADLK : join avec self) Exemple : create, exit/join
  • Page 19
  • 2 Modles du paralllisme I- Modle Synchrone Flot de donnes Flot de contrle P0 ---- P1 ---- Pn ---- Horloge t0 t1 t2 t3 t4 Une seule horloge A chaque top tous les processus sactivent excution // entre 2 top interaction 0 Lustre Esterel
  • Page 20
  • 2 Modles du paralllisme II- Modle Asynchrone H0H1H2.Hn Indpendance interaction 0
  • Page 21
  • Quelques Problmes Causes cooprationPartage de ressources Communication & Synchronisation Synchrone Asynchrone Variables partages Envoie de messages
  • Page 22
  • Quelques Problmes Exclusion Mutuelle Communication Synchrone Communication Asynchrone Attendre & Signaler un vnement Diffuser un vnement Allocation de Ressources Fichier Partag Pilote dEntre /Sortie :::::::: Proprits Comportementales Sret Section Critique Non Inter blocage Vivacit Non Famine quit