• Aucun résultat trouvé

Exercice4:Threadsetexclusionmutuelle Exercice3:Parrall´elisation Exercice2:Ordonnancementdeprocessus Exercice1:Cr´eationdeprocessus Aucundocumentn’estautoris´e Mercredi16Mars20119h-12h ContrˆoleSyst`emesd’exploitation,R´eseaux

N/A
N/A
Protected

Academic year: 2022

Partager "Exercice4:Threadsetexclusionmutuelle Exercice3:Parrall´elisation Exercice2:Ordonnancementdeprocessus Exercice1:Cr´eationdeprocessus Aucundocumentn’estautoris´e Mercredi16Mars20119h-12h ContrˆoleSyst`emesd’exploitation,R´eseaux"

Copied!
2
0
0

Texte intégral

(1)

Institut Galil´ee Syst`emes d’exploitation, R´eseaux

Ann´ee 2010-2011 Licence 2

Contrˆ ole Syst` emes d’exploitation, R´ eseaux

Mercredi 16 Mars 2011 9h - 12h

Aucun document n’est autoris´ e

Exercice 1 : Cr´ eation de processus

(1,5)

1. Lequel des programmes A, B, C suivants cr´ee le plus de processus sur un syst`eme de type Unix (expliquer votre r´eponse en indiquant le comportement de chaque programme lors de son ex´ecution) ? Lequel pourrait causer un blocage du syst`eme ?

Programme A: int main(int argc, char* argv[]) { while(fork() !=0 ) { } return 0;}

Programme B: int main(int argc, char* argv[]) { while(fork() ==0 ) { } return 0;}

Programme C: int main(int argc, char* argv[]) { while(1) {fork();} return 0; }

Exercice 2 : Ordonnancement de processus

(7,5 = 1 + 1,5 + 3 + 2)

On consid`ere les sept ex´ecutions de processus suivants :

Processus Date d’arriv´ee Dur´ee

1 0 7

2 0 4

3 1 6

4 1 1

5 1 2

6 2 4

7 2 1

1. Rappeler en quelques lignes ce qu’est la commutation de contexte.

2. Rappeler en quelques lignes ce qui caract´erise les ordonnancements `a court terme, `a moyen terme, `a long terme.

3. Donner les diagrammes de Gantt et les temps de traitement moyen obtenus `a l’aide des algorithmes d’ordonnancement FIFO (Premier arriv´e - Premier servi) et Tourniquet (avec un quantum de 1) en supposant un temps de com- mutation de contexte n´egligeable.

4. Avec un ordonnancement par tourniquet, donner le temps d’attente entre 2 passages en ex´ecution d’un processus en fonction du temps de commutation et du nombre de processus prˆets. Expliquer votre r´esultat.

Exercice 3 : Parrall´ elisation

(3)

On consid`ere l’ensemble de tˆaches suivant (qui calcule (x+y+z)/u∗v∗(x+y)) : t1: a = x + y;

t2: b = u * v;

t3: c = a + z;

t4: d = a * b:

t5: R = c / d;

Le syst`eme de tˆaches avec l’ordret1< t2< t3< t4< t5 est-il d´etermin´e ? Si oui, donner le syst`eme de parall´elisme maximal ´equivalent et en d´eduire un programme utilisant les primitives de Conway fork/join/quit.

Exercice 4 : Threads et exclusion mutuelle

(8: 1 + 3 + 2 + 2)

On cherche `a programmer un logiciel capable de compter le nombre de ’a’ dans une chaˆıne de caract`eres. Concr`etement il s’agit d’´ecrire un programme ayant les caract´eristiques suivantes:

• Une fonctionintcompter(char∗s)qui retourne le nombre de ’a’ de la chaˆıne de caract`eress.

1

(2)

• Le programme a une donn´ee globale qui est un tableau de chaˆıne de caract`eres nomm´echar∗requetes[]de taille 5.

• Le programme cr´ee un thread qui doit ex´ecuter la fonctionvoid∗accueil(void∗s)et 10 threads qui ex´ecutent la fonctionvoid∗executer(void∗s), puis attend que tous les threads soient termin´es.

• La fonctionvoid∗accueil(void∗s)est une boucle infinie qui lit du clavier une chaˆıne de caract`eres et la met `a la premi`ere case libre du tableaurequetessi le tableau n’est pas plein.

• La fonctionvoid∗executer(void∗s)r´ecup`ere du tableaurequetes une chaˆıne s’il y en a une, appelle la fonction compteret affiche le r´esultat.

1. Ecrire la fonctioncompter.

2. Sans consid´erer les probl`emes d’exclusion mutuelle, ´ecrire les fonctions accueil et executer. 3. Ecrire le reste du programme: fonctionmainet variables globales n´ecessaires.

4. Ajouter les mutex n´ecessaires au bon fonctionnement.

Fonctions et en-tˆete utiles:

1#include<s t d i o . h>

2#include<s t d l i b . h>

3#include<p t h r e a d . h>

4

5 i n t p t h r e a d c r e a t e ( p t h r e a d t ∗t h r e a d ,

6 const p t h r e a d a t t r t ∗a t t r ,

7 void ∗(∗s t a r t r o u t i n e ) (void∗) , void ∗a r g )

8 i n t p t h r e a d j o i n ( p t h r e a d t t h r e a d , void ∗∗v a l u e p t r )

9 void p t h r e a d e x i t (void ∗v a l u e p t r )

10

11 i n t p t h r e a d m u t e x l o c k ( p t h r e a d m u t e x t ∗mutex )

12 i n t p t h r e a d m u t e x u n l o c k ( p t h r e a d m u t e x t ∗mutex )

13 i n t p t h r e a d m u t e x i n i t ( p t h r e a d m u t e x t ∗mutex , const p t h r e a d m u t e x a t t r t ∗a t t r )

14 i n t p t h r e a d m u t e x d e s t r o y ( p t h r e a d m u t e x t ∗mutex )

2

Références

Documents relatifs

[r]

Ecrivez la fonction void commande(bool C[], bool E[],bool P[], bool D[], int n) qui remplit le tableau C de telle façon que chaque élément C[i] soit égal à true si le client i a

4251-17 ; création, aménagement, entretien et gestion de zones d'activité industrielle, commerciale, tertiaire, artisanale, touristique, portuaire ou aéroportuaire ; politique locale

Ecrire un algorithme (en Python, ou, éventuellement, en pseudo-code) permettant d'acher, dans l'ordre demandé, les 3n 3 pour les entiers n multiples de 5 décroissants de 35 à

GtkWidget* gtk_label_new(const gchar* str); crée un objet GtkLabel de libellé str void gtk_label_set_label(GtkLabel* label, const gchar* str); affecte le libellé str au label

Dessiner un nouveau diagramme en boˆıte obtenu en rempla¸cant la m´ediane par la moyenne, le premier quartile par la valeur x − s et le troisi`eme quartile par la valeur x +

Combien de tirages pour lesquels on tire deux jetons de chaque couleur.. Combien de tirages où tous les jetons tirés ont des

On fait cela tant qu’il y a plusieurs ´el´ements dans le tableau.. Si le tableau est de taille impaire, son ´el´ement central