Tp 5: exclusion mutuelle par sémaphore - systèmes d’exploita

Télécharger PDF

Obtenir le pack complet des cours, TDs, examens sur Systèmes d’Exploitation!

Vous souhaitez maîtriser Systèmes d’Exploitation ? Ne cherchez plus, nous avons le pack bien choisi pour vous.

pack complet des cours, TDs, TPs et examens exercices sur Systèmes d’Exploitation

Accédez à une collection complète des supports de cours, des travaux dirigés (TDs) corrigés, TPs avec solution, examens...

Télécharger pack

Universit" de Bouira- D ́epartement d’InformatiqueAnn ́ee 2016-2017

Syst`emes d’exploitation des Ordinateurs 23`eme ann ́ee

TP 5: Exclusion Mutuelle par S ́emaphore

Exercice 1

(Produit de deux matrice) :

On veut effectuer en parall`ele le produit de deux matricesAetBd’ordren(n∗n). Pour se faire,

on cr ́eem(m < n) processus l ́egers (threads). Chaque processus l ́eger se charge de calculer quelques

lignes de la matrice r ́esultatR:

P our j= 0 `an−1R[i, j] =∑ k= 0, n−1

A[i, k]∗B[k, j];

Questions

- ́

Ecrire le programme de la fonction CalculeLigne, sans l’utilisation des threads ;

- ́

Ecrire le programme de la fonction CalculeLigne, en utilisant des threads et s ́emaphores ;

- Faites une comparaison entre les deux programmes en fonction du temps d’ex ́ecution.Notes: int rand

ab(int a, int b){return rand()%(b-a) +a;}g ́en`ere des nombres dans l’intervalle [a,b[;

#include< time.h >; clockt temps ; temps=clock(); pour m ́esurer le temps d’ex ́ecution.

Rappels des fonctions de manipulation des s ́emaphores d ́efinis par le

standard Posix

1. #include<semaphore.h>: librairie contenant les services Posix de manipulation des s ́emaphores;

2.semt: d ́esigne le type du s ́emaphore;

3.int seminit(semt *sem, int pshared, unsigned int valeur) : Initialisation du s ́emaphore sem;

•sem: est un pointeur sur le s ́emaphore `a initialiser;

•pshared: indique si le s ́emaphore est local au processus (pshared=0) ou partag ́e entre le

p`ere et le fils (pshared6= 0).

•valeur: est la valeur initiale du s ́emaphore ;

4. intsemwait(semt *sem) : est ́equivalente `a l’op ́eration P (S) et retourne toujours 0;

5. intsem

post(semt *sem): est ́equivalente a l’op ́eration V(S) : retourne 0 en cas de succ`es ou

-1 autrement;

6. intsemtrywait(semt *sem) : d ́ecr ́emente la valeur du s ́emaphore sem si sa valeur est sup ́erieure

`a 0 ; sinon elle retourne une erreur. C’est une op ́eration atomique;

7. intsem

getvalue(semt * sem, int * sval): r ́ecup ́erer la valeur d’un s ́emaphore : il retourne

toujours 0;

8. intsem

destroy(semt* sem): d ́etruire un s ́emaphore. Retourne -1 s’il y a encore des waits.

Par: A. ABBASpage 1

Partagez vos remarques, questions ou propositions d'amélioration ici...

Enregistrer un commentaire (0)
Plus récente Plus ancienne

Publicité 1

Publicité 2