Mini projet
Département d’informatique
Système d’exploitation
Mini projet
Réalisé par
Lamoudan Mohammed
Sous la responsabilité de :
Mr : MEKNASSI MOHAMMED
Réaliser le 20/05/15
Mini projet
La première chose que je vais faire c’est de lister les déférente tache que je dois accomplir.
Avant de commencer le traitement du problème on doit d’abord Générer une matrice aléatoire est
une fonction de multiplication matriciel:
Voici le code du programme :
#include <stdio.h>
#include<stdlib.h>
/* Déclarations */
int rand_0_100() //produire un nombre aleatoire entre 0 et 20
{
return rand()%(100);
}
void multiplication(int A[1000][1000], int B[1000][1000]){
int C[50][50]; /* matrice résultat */
int N, M, P; /* dimensions des matrices */
int I, J, K; /* indices courants */
/* Saisie des données */
printf("*** Matrice A ***\n");
printf("Nombre de lignes de A (max.50) : ");
scanf("%d", &N );
printf("Nombre de colonnes de A (max.50) : ");
scanf("%d", &M );
for (I=0; I<N; I++)
for (J=0; J<M; J++)
{
A[I][J]=rand_0_100();
}
printf("*** Matrice B ***\n");
printf("Nombre de lignes de B : %d\n", M);
printf("Nombre de colonnes de B (max.50) : ");
scanf("%d", &P );
for (I=0; I<M; I++)
for (J=0; J<P; J++)
{
B[I][J]=rand_0_100();
}
/* Affichage des matrices */
printf("Matrice donnée A :\n");
for (I=0; I<N; I++)
{
for (J=0; J<M; J++)
printf("%7d", A[I][J]);
printf("\n");
}
printf("Matrice donnée B :\n");
for (I=0; I<M; I++)
{
for (J=0; J<P; J++)
printf("%7d", B[I][J]);
printf("\n");
}
/* Affectation du résultat de la multiplication à C */
for (I=0; I<N; I++)
for (J=0; J<P; J++)
{
C[I][J]=0;
for (K=0; K<M; K++)
C[I][J] += A[I][K]*B[K][J];
}
Mini projet
/* Edition du résultat */
printf("Matrice résultat C :\n");
for (I=0; I<N; I++)
{
for (J=0; J<P; J++)
printf("%7d", C[I][J]);
printf("\n");
}
}
main ()
{
int A[1000][1000];
int B[1000][1000];
multiplication(A,B);
}
Son exécution :
A. La création des dix processus lourd et l’affectation des différente tache a chacun des processus.
voici le code du programme :
Mini projet
Apres l’exécution du programme en constate que les processus termine par tour de role cette
capture nous donne une petite idée sur le fonctionnement du programme :
B. Maintenant c’est le tour des dix processus lèges ou threads et les comparer avec les processus
précèdent.
voici le code du programme :
Mini projet
Et voici son exécution :
C. En vas fusionner les deux programme précèdent dans un programme principale pour voire la
différence entre eux en ce qui concerne la vitesse.
et voici le programme après l’exécution :
D. La dernière chose á faire c’est de comparer le temps d’exécution des deux programmes et
j’ai trouvé que les processus lèges sont beaucoup plus rapide que les lourd chose évidente
sachant que les processus lèges s’exécute parallèlement (au même temps), déferrement au
processus lourd qui s’exécute d’une façon synchrone.
Mini projet