(1,5 points) d) Quel est le rôle d un rmiregistry? (1 point) i=1

Documents pareils
Synchro et Threads Java TM

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

J2SE Threads, 1ère partie Principe Cycle de vie Création Synchronisation

Développement Logiciel

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

INITIATION AU LANGAGE JAVA

Un ordonnanceur stupide

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Exercices INF5171 : série #3 (Automne 2012)

Problèmes liés à la concurrence

Remote Method Invocation Les classes implémentant Serializable

Cours de Systèmes d Exploitation

4. Outils pour la synchronisation F. Boyer, Laboratoire Lig

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Calcul Parallèle. Cours 5 - JAVA RMI

Introduction à la programmation concurrente

Introduction : les processus. Introduction : les threads. Plan

Les arbres binaires de recherche

Parallélisme et Répartition

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Threads. Threads. USTL routier 1

Projet L1, S2, 2015: Simulation de fourmis, Soutenance la semaine du 4 mai.

Communication inter-processus (IPC) : tubes & sockets. exemples en C et en Java. F. Butelle

TD3: tableaux avancées, première classe et chaînes

Programmation d Applications Concurrentes et Distribuées (INF431)

Une introduction à la technologie EJB (2/3)

Conventions d écriture et outils de mise au point

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Remote Method Invocation (RMI)

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Cours 1 : Qu est-ce que la programmation?

Notion de thread (1/2)

Programmation Objet Java Correction

NFP 121. Java et les Threads. Présentation : Thierry Escalarasse Mai 2007

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Certificat Big Data - Master MAthématiques

- affichage digital - aiguille

Pour plus de détails concernant le protocole TCP conférez vous à la présentation des protocoles Internet enseignée pendant.

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Algorithmique et Programmation, IMA

Premiers Pas en Programmation Objet : les Classes et les Objets

Simulation d un système de paiement par carte bancaire

Bases Java - Eclipse / Netbeans

Analyse de performance, monitoring

Programmation Par Objets

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

Projet de programmation (IK3) : TP n 1 Correction

Les structures de données. Rajae El Ouazzani

Introduction au langage C

Architecture Orientée Service, JSON et API REST

Resolution limit in community detection

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Bien lire l énoncé 2 fois avant de continuer - Méthodes et/ou Explications Réponses. Antécédents d un nombre par une fonction

Corrigé des exercices sur les références

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

Gestion distribuée (par sockets) de banque en Java

Introduction à la Programmation Parallèle: MPI

ACTIVITÉ DE PROGRAMMATION

Baccalauréat ES/L Amérique du Sud 21 novembre 2013

I. Introduction aux fonctions : les fonctions standards

Concours National d Informatique. Sujet de demi-finale Montpellier et Toulouse

Java Licence Professionnelle CISII,

STS SE. FreeRTOS. Programmation réseau WIFI. Programmation réseau. Socket Tcp. FlyPort smart Wi-Fi module

Dis papa, c est quoi un bus logiciel réparti?

4 Exemples de problèmes MapReduce incrémentaux

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Programmation système en C/C++

Flux de données Lecture/Ecriture Fichiers

Arguments d un programme

Argument-fetching dataflow machine de G.R. Gao et J.B. Dennis (McGill, 1988) = machine dataflow sans flux de données

RMI le langage Java XII-1 JMF

1 Mesure de la performance d un système temps réel : la gigue

Plan du cours. Historique du langage Nouveautés de Java 7

Solutions du chapitre 4

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

INF 321 : mémento de la syntaxe de Java

Modèle à composants. Daniel Hagimont. IRIT/ENSEEIHT 2 rue Charles Camichel - BP TOULOUSE CEDEX 7. Remerciements

Enseignement secondaire technique

03/04/2007. Tâche 1 Tâche 2 Tâche 3. Système Unix. Time sharing

IRL : Simulation distribuée pour les systèmes embarqués

Cours Informatique Master STEP

TRAVAUX PRATIQUES Programmation Système Langage C / Système UNIX. 2 e année Génie Informatique

La Programmation Orientée Agent Les Agents Réactifs

Cours 7 : Utilisation de modules sous python

Auto-évaluation Programmation en Java

Probabilités. Rappel : trois exemples. Exemple 2 : On dispose d un dé truqué. On sait que : p(1) = p(2) =1/6 ; p(3) = 1/3 p(4) = p(5) =1/12

4. Outils pour la synchronisation F. Boyer, Laboratoire Sardes

Baccalauréat ES Polynésie (spécialité) 10 septembre 2014 Corrigé

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Algorithmique et programmation : les bases (VBA) Corrigé

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Programmer en JAVA. par Tama

Programmation système de commandes en C

TD2 Programmation concurrentielle

Noyau de concurrence par moniteur pour Java ou C# pour une autre sémantique plus fiable et plus performante

Représentation d un entier en base b

Transcription:

Université de Provence MASTER INFORMATIQUE Programmation Parallèle et Distribuée 2010-2011 Programmation Parallèle et Distribuée Partiel jeudi 10 mars 2011 2h00 Aucun document autorisé. Les réponses doivent être argumentées. Les parties sont indépendantes. Le barème est indicatif. Le sujet est composé de 4 pages + 2 pages d annexe. 1 Questions de cours (4,5 points) a) Qu est-ce-qu une machine PRAM? Préciser les différents modes d accès possibles à la mémoire partagée. (1 point) b) Qu est-ce qu un sémaphore? (1 point) c) Expliquer en une douzaine de lignes ce qu est un objet distant et les objectifs et principes de fonctionnement de Java RMI. (1,5 points) d) Quel est le rôle d un rmiregistry? (1 point) 2 Multiplication avec des PRAM (4 points) a) Étant donné un tableau d entiers T de taille n on cherche à calculer la multiplication de tous les éléments du tableau ( n i=1 T [i]). Donner un algorithme CREW efficace en pseudo-code pour une machine PRAM à n processeurs effectuant ce produit. (3 points) Solution : pour chaque proc i en parallèle { tant que ( il existe processeur i tel que next[i]!= NULL ) { si (next[i]!= NULL ) { T[next[i]] = produit(t[i], T[next[i]]) next[i] = next[next[i]] // saut de pointeur 1

Si i == taille(t)-1 alors résultat=t[taille(t)-1] b) Quelle est la complexité de votre algorithme de multiplication (donner la complexité avec la notation O)? Quelle est sa complexité totale? (1 point) Solution : On note n la taille du tableau en entrée. La complexité de l algorithme est O(log n). Sa complexité totale est O(n log n). 3 Algorithme Java (6 points) On considère le code java suivant : public c l a s s Mystery extends Thread{ s t a t i c AtomicInteger counter=new AtomicInteger ( 0 ) ; Random r= new Random ( ) ; public Mystery ( ) { / / e n d o r t l e t h r e a d de 1 à 100 m i l l i s e c o n d e s public void pause ( ) { i n t time=r. n e x t I n t ( 1 0 0 ) + 1 ; sleep ( time ) ; System. out. p r i n t l n ( Temps + time ) ; catch ( InterruptedException i e ){ System. out. p r i n t l n ( Thread interrompu + counter. get ( ) ) ; public void run ( ) { for ( i n t i =0; i <10; i ++){ i n t temp=counter. get ( ) ; counter. s e t ( temp + 1 ) ; public s t a t i c void main ( S t r i n g [ ] argv ){ Mystery thread1= new Mystery ( ) ; Mystery thread2= new Mystery ( ) ; thread1. s t a r t ( ) ; 2

thread2. s t a r t ( ) ; thread1. j o i n ( ) ; thread2. j o i n ( ) ; catch ( InterruptedException i e ){ System. out. p r i n t l n ( Thread interrompu + i e ) ; System. out. p r i n t l n ( Valeur f i n a l e : + counter. get ( ) ) ; a) À quoi sert le bloc try dans la fonction main? (1 point) Solution : La méthode join() étant bloquante, il est possible qu un autre thread essaye d interrompre le processus alors qu il est en attente à cause de l appel de join(). Dans un tel cas, le thread lance l exception InterruptedException. On doit donc mettre l appel de join() dans un bloc try pour capturer l exception. b) Quel est le nombre maximum de Threads pouvant s exécuter en parallèle lors d une exécution de cette fonction sur une machine avec 4 processeurs? (0,5 point) Solution : Il y a trois threads : le thread principal (main) et les deux threads lancés par celui-ci (thread1 et thread2) c) Quelle est la valeur maximale que peut afficher cette fonction? (on suppose qu aucun thread ne s arrête prématurément) (2 points) Solution : Cette fonction peut afficher une valeur de 20. Cette valeur est atteinte durant une exécution telle que la variable n est pas modifié entre la lecture et son écriture par un Thread. Entre les exécutions des lignes int temp=counter.get() ; et counter.set(temp+1) ; par un thread, l autre thread ne doit pas écrire la variable counter. C est possible dans le cas ou les pauses aléatoires sont courtes. d) Quelle est la valeur minimale que peut afficher cette fonction? (on suppose qu aucun thread ne s arrête prématurément) (2,5 points) Solution : Cette fonction peut afficher une valeur de 2. Une exécution menant à cette valeur est la suivante : (a) Le premier processus lit counter (valeur 0) (b) Le deuxième processus lit puis écrit counter neuf fois (valeur 9) (c) Le premier processus écrit counter (valeur 1) (d) Le deuxième processus lit counter (valeur 1) (e) Le premier processus lit puis écrit counter neuf fois (valeur 10). (f) Le deuxième processus écrit counter (valeur finale 2) 3

Les processus écrivent puis lisent successivement counter dix fois chacun. Cette exécution correspond bien à une exécution possible dans le cas ou la pause aléatoire entre la première lecture et écriture du premier processus est longue et que la pause aléatoire entre la dernière lecture et écriture du deuxième processus est longue. 4 Problème du Père Noël (5,5 points) On considère le problème suivant, dit du Père Noël. Le Père Noël dort au Pôle Nord tant qu il n est pas réveillé par ses neuf rênes ou par six de ses dix elfes. A son réveil, il effectue l une des actions suivantes de manière atomique : Si ce sont les rênes qui l ont réveillé, le Père Noël les harnache, remplit le traîneau de jouets et part ensuite les livrer dans le monde entier. Au retour, il permet aux rennes de se mettre en vacances. Si ce sont des elfes qui l ont réveillé, le Père Noël propose de nouvelles idées de jouets à ceux-ci. Les elfes repartent alors fabriquer des jouets avec leurs collègues. Les rênes sont prioritaires sur les elfes. On souhaite créer une classe Java PereNoel permettant de résoudre le problème. Afin de simuler le temps pris par les taches décrites (comme la distribution de jouets) vous pouvez utiliser la fonction pause() de l exercice 3. a) Écrire une méthode réveilparunrenne() qui permet aux rennes de réveiller le Père Noël. La fonction doit être bloquante tant que tous les rennes ne sont pas réunis. (1,5 points) b) Écrire une méthode réveilparunelfe() qui permet aux elfes de réveiller le Père Noël. La fonction doit être bloquante tant que le nombre d elfe requis n est pas atteint. (1,5 points) c) On souhaite maintenant avoir une version distribuée résolvant le problème avec les rennes et elfes en clients et le Père Noël comme serveur. Expliquer en une quinzaine de lignes votre solution. (2,5 points) 4

public c l a s s PereNoel { f i n a l i n t nbrennesrequis =9; f i n a l i n t nbelfesrequis =6; I n t e g e r nbrennes ; I n t e g e r nbelfes ; public PereNoel ( ) { nbrennes=new I n t e g e r ( 0 ) ; nbelfes=new I n t e g e r ( 0 ) ; occupe= f a l s e ; synchronized public void reveilparunrenne ( ) { i f ( nbrennes. incrementandget ( ) <nbrennesrequis ){ nbrennes. wait ( ) ; catch ( InterruptedException i e ){ System. out. p r i n t l n ( Thread renne interrompu + i e ) ; else { nbrennes. s e t ( 0 ) ; nbrennes. n o t i f y A l l ( ) ; synchronized public void reveilparunelfe ( ) { i f ( nbelfes. incrementandget () < nbelfesrequis ){ nbelfes. wait ( ) ; catch ( InterruptedException i e ){ System. out. p r i n t l n ( Thread e l f e interrompu + i e ) ; else { nbelfes. s e t ( 0 ) ; nbelfes. n o t i f y A l l ( ) ; 5

5 Liste chainée avec PRAM (exercice bonus) (4 points) Soit L une liste chaînée contenant n objets coloriés soit en bleu, soit en rouge. On souhaite concevoir un algorithme CREW efficace qui sépare les élément bleus des éléments rouge (c est-à-dire qui change le chainage de la liste chainée de départ pour qu elle ne contiennent que des objets bleus). Pour cet algorithme, on supposera que l on a autant de processeurs que la taille de la liste et que chaque processeur a accès à l élément i de la liste avec la liste(i), la couleur de l élément i avec couleur(i) (renvoyant une couleur : bleu ou rouge) et le pointeur de chainage de la liste avec suivant(i) (renvoyant le numéro de l élément suivant) a) Donner le pseudo-code de l algorithme. (3 points) b) Quelle est la complexité de votre algorithme? (donner la complexité avec la notation O) (1 point) 6