Vous êtes sur la page 1sur 3

Introduction la Programmation Concurrente, Distribue et Parallle

Ingnieur 3 re anne
Denivaldo LOPES

Liste dexercices
1. Notions de Programmation Squentielle et Parallle
a. Donnez une dfinition prcise des thmes suivants:

b.

paralllisme physique

paralllisme logique

Pour chacun des paradigmes suivants, proposez un exemple d'algorithme simple :

squentiel

parallle physique

parallle logique

Note: utilisez l'exemple du tutoriel comme base.


c. Quelles sont les paramtres utiliss par la classification de Flynn?
d. Dfinissez et expliquez les architectures suivantes en utilisant la classification de Flynn:

SISD (Single Instruction stream, Single Data stream)

SIMD (Single Instruction stream, Multiple Data stream)

MISD (Multiple Instruction stream, Single Data stream)

MIMD (Multiple Instruction stream, Multiple Data stream)

e. Dfinissez et expliquez les concepts suivants:

La granularit

Le Facteur d'acclration ou Speedup

L'efficacit ou efficiency

f. Un problme donn prend 1s quand il est excut sur une machine monoprocesseur, et prend 300 ms quand il est
excut sur une machine parallle relle avec 4 processeurs. Rpondez aux questions suivantes:

Quel est le facteur d'acclration et l'efficacit?

Pourquoi la machine parallle relle avec 4 processeurs est incapable de rsoudre le problme en 250 ms (c'est
dire, Tp= Ts / n, o Tp est le temps pris par le programme parallle, Ts est le temps pris par le programme
squentiel, et n est le nombre de processeurs de la machine parallle)?

g. Donnez les diffrentes classifications du paralllisme par rapport au modle de programmation adopt pour parallliser
un algorithme. Utilisez le polynme suivant pour expliquer les diffrents cas:
p[i]=a+b*x^2+c*x^4+d*x^6+e*x^8+f*x^10

h. Donnez des exemples d'utilisations de la programmation parallle (physique ou logique) et distribue.

2. Paradigmes de la programmation Concurrente: Synchronisation et Communication


a. Dfinissez les concepts de processus et de thread. Expliquez quelles sont les diffrences entre eux.
b. Quelles sont les ressources partages entre threads d'un mme processus et quelles sont les ressources prives chaque
threads?
c. Quels sont les diffrents tats d'un processus? Expliquez chaque tat.
d. Donnez et expliquez les diffrents types de processus.

e. Qu'est-ce que c'est la multitche de premption et de non-premption? Linux est un systme d'exploitation qui utilise la
premption ou non premption (Note: considre les processus d'utilisateurs et du noyau kernel)?
f. Dfinissez les notions d'action atomique, de section critique, de l'tat de course (race condition)? Expliquez chaque cas.
g. Quelles sont les proprits assurer dans une section critique?
h. Expliquez les notions suivantes:

Busy waiting

Barrier

Smaphore

Monitors

i. Expliquez les primitives send et receive . Quelles sont les modalits de synchronisation de ces primitives?
j. Donnez votre dfinition personnelle de RPC et Rendez-vous? Vous pouvez utiliser une figure pour expliquer.

3. La Programmation concurrente en Java: Threads


a. Expliquez les mthodes suivantes de la classe Thread: run, start, join, sleep et yield.
b. crivez un programme en Java qui utilise deux threads et un buffer limit et circulaire avec les comportements suivants
(vous pouvez utiliser un smaphore ou un moniteur pour implmenter la section critique):

Un premier thread va lire au clavier un message et va lcrire dans un buffer limit et circulaire.

Le second thread va lire partir du buffer limit et circulaire son contenu. Aprs, le thread va l crire dans un
fichier.

c. Utiliser une barrier et plusieurs threads pour implmenter un programme en Java qui ralise laddition de tous les
lments d'un tableau A[m, n].
Suggestion:

La manire plus simple de rsoudre ce problme est dutiliser un programme squentiel.


program addition_elements
{
int sum, a[m,n];
...
sum = 0 ;
for (int i=0; i < m; i++)
for (int j=0; j < n; j++)
sum= sum + a[i, j];
...
print(sum);
}

Quand on utilise plusieurs threads et une barrier, on peut diviser le tableau en rgions et donner chaque rgion
par un thread diffrent. La barrier est utilise pour assurer que laddition de tous les rsultats partiaux sera
excute, seulement aprs que le dernier thread est finis laddition de sa rgion.

program addition
{
int number_workers=m;
int sum_total, sum[m], a[m,n]; // sum_total=0; sum[0...m-1]=0; a[0...m, 0...n]=?
barrier b(m);
...
read_all_elements(a); // read m*n values and put them into the array 'a'
...
for(int i=0; i < m; i++)
create_thread( worker(b, sum, i, a, i, n) );
...
while(get(barrier) > 0) yield();
for(int i=0; i < m; i++)
sum_total= sum_total + sum[i];
print(sum_total);
}
worker(barrier b, int sum[],int index_sum, int a[ ], int m, int n )
{

for (int j=0; j < n; j++)


sum[index_sum]= sum[index_sum] + a[m, j];
decrease(barrier);
}

4. Passage de message en Java


a. crivez un programme en Java qui implmente un buffer limit et circulaire et est appel distance. Quand un message
arrive au serveur du buffer, il va crer un thread. Ce thread accde au buffer pour lire ou crire un lment. Attention: le
buffer peut accepter plusieurs demandes, mais seulement un thread la fois peut accder la rgion critique.
Note: crivez un programme avec passage de message asynchrone et autre avec passage de message synchrone.
b. Implmenter un simple serveur ( et client) de fichiers qui utilise le passage de message asynchrone et synchrone.
Note: dans le cas de passage de message asynchrone vous devez assurer que les donnes seront bien transmises. Soyez
crative pour donner des solutions.

5. XML-RPC (Remote Procedure Call) en Java


a. Quelles sont les technologies utilises pour XML-RPC? Expliquez chacunes.
b. Comment une requte est faite en XML-RPC?
c. crivez un programme en Java avec XML-RPC qui implmente un serveur et un client de fichiers.

6. Middleware
a. Dfinissez ce que c'est middleware? Donnez des exemples de middleware.
b. Comment une requte est faite en RMI (Remote Method Invocation)?
c. Implmentez un programme en Java avec RMI qui implmente un serveur et un client de fichiers.
d. Qu'est-ce que c'est CORBA? Quelles sont les avantages de CORBA?
e. Implmentez un programme en Java avec CORBA permettant de faire: laddition, la soustraction et la multiplication
de tableaux bidimensionnels.
Note: Utilisez les squences pour implmenter le programme.

Autres questions
a. Expliquez les notions de:
Parallel Processor).

SMP (Symmetric MultiProcessing), MPP(Massively Parallel Processing or Massively

b. Dfinissez la notion de HyperThreading? Quels sont ses avantages?


Note: (consulter le site Web de l'Intel).

Etude de Cas
a. Implmentez un programme en Java permettant la multiplication parallle (physique) de tableaux bidimensionnels. Le
programme doit tre excuter par n diffrents processeurs connects en rseau. Note: Utilisez Java RMI.
b. Implmentez un programme en Java avec CORBA qui cre le fractal Mandelbrot. Le fractal doit tre gnr de faon
parallle physique. Note: Utilisez les squences pour transmettre les donnes.
c. Implmentez un programme qui utilise le concept Evolution Strategies
dimensionnels, non-diffrentiables, non-continues et limits.

pour rsoudre les fonctions n-

d. Implmentez un serveur Web multithreaded qui utilise une liste FIFO pour stocker les connections du demandeur. Le
nombre de threads doit tre limit n. Les threads consultent suivant la liste FIFO pour prendre des connections et
attendre les requtes que le demandeur envoyer par elles.