• Aucun résultat trouvé

Corrigé Module de Systèmes d’exploitation II

N/A
N/A
Protected

Academic year: 2022

Partager "Corrigé Module de Systèmes d’exploitation II"

Copied!
2
0
0

Texte intégral

(1)

Université de Chlef Avril 2011 Département Informatique

Filière : 3ème LMD (S5)

Examen de rattrapage

Module de Systèmes d’exploitation II

durée 1H30

Corrigé

Exercice 1 : La solution au problème du coiffeur endormi suivante présente un problème. Lequel ? Expliquez clairement.

Processus Coiffeur Début

Cycle

Wait(SClient) Wait(mutex) Attente :=attente-1 Signal(SCoiffeur) Signal(mutex) Couper_cheveux FinCycle

Fin

Processus Client Début

Wait(mutex)

Si (attente<Nbre_Chaise) Alors

Attente :=attente+1 ; Signal(mutex) Signal(SClient) Wait(SCoiffeur) Obtenir_coupe Sinon Signal(mutex) Finsi

Fin

Déclarations :

SClient, SCoiffeur : sémaphores initialisés à 0.

Mutex : sémaphore, initialisé à 1.

Attente : entier initialisé à 0.

Réponse :

Le problème de cette solution réside dans le fait que dans le processus Client , l'instruction Signal(mutex) doit suivre Signal(Sclient) et non pas la précéder. La conséquence de cette erreur, est qu'on peut avoir une situation où plusieurs processus clients arrivent au salon , alors que le coiffeur est endormi, et lancent chacun un signal(Sclient) qu'aucun ne parvient au Coiffeur ; ce qui constitue un manquement par rapport aux contraintes du problème.

(06 points)

Exercice 2 : Expliquez brièvement les différentes manières de créer un thread en java.

Réponse :

Pour créer un thread en Java, on peut utiliser l’une des deux méthodes suivantes :

1/'hériter de la classe Thread et de redéfinir la méthode run(), 2/ implémenter l'interface Runnable.

(4 Points)

(2)

Exercice 3 : Ecrire en langage Java une classe implémentant les sémaphores.

Réponse :

/* La classe Semaphore. */

public class Semaphore { private int value;

public Semaphore(int n) { value = n;

}

public synchronized void wait() { while (value <= 0) {

try { wait(); } catch (InterruptedException e) {};

};

value--;

}

public synchronized void signal() { value++;

notifyAll();

} }

(06 points)

Exercice 4 : Dans un système, on trouve une seule classe de ressources de onze (11) instances. Cinq (05) processus partagent ces ressources. Chaque processus peut demander au maximum trois (03) ressources. Peut-on avoir un cas d’interblocage ? Justifiez.

Réponse :

Au pire, chaque processus a obtenu déjà 2 ressources, ce qui a mobilisé 10 ressources. Le premier qui demandera sa troisième ressource pourra terminer et rendre une ressource au moins; cette ressource pourra permettre à un autre processus de terminer, ...et ainsi de suite. Nous avons donc une séquence saine, et par conséquent l’état du système est sain et il n’y a aucun risque d’interblocage.

(02 points) Comment pouvez-vous généraliser le résultat précédent ?.

Réponse :

On peut généraliser le résultat précédent. Soient N, T, M respectivement le nombre de processus, le nombre de ressources au maximum demandées par chaque processus et le nombre total de ressources. Pour que le système ne risque pas d’interblocage, il faudrait que : M soit égal au minimum à : M = N(T - 1) + 1.

(02 points)

Le corrigé et les résultats seront publiés sur le site : http://www.loukam.net

Références

Documents relatifs

On reprend le problème de synchronisation du Producteur-Consommateur avec buffer circulaire et de taille limitée N, mais on suppose qu'il y'a maintenant

On considère le problème de synchronisation &#34;Producteur/Consommateur&#34; avec buffer limité, mais le nombre de producteurs est égal à 2 alors qu'il n'ya qu'un

La différence est que dans le modèle lecteur/rédacteur, on ne peut trouver qu’un seul rédacteur à la fois entrain d’occuper la ressource partagée (fichier) alors que dans

Exercice 1 : On considère le problème du Producteur-Consommateur où le buffer possède une seule case. Proposez une solution à ce problème en utilisant les moniteurs

Exercice 1 : On considère le problème du Producteur-Consommateur où le buffer possède une seule case.. Proposez une solution à ce problème en utilisant les moniteurs

Proposez un schéma de synchronisation des processus PersonneA et PersonneB en utilisant des sémaphores, dans les deux cas suivants : Cas 1 : Lorsqu'il y a des personnes dans

Mais on impose que le consommateur ne doit pas consommer plus de x messages toutes les s secondes. La solution doit utiliser les

Chaque fichier a son propre inode qui contient des métadonnées pour la description du fichier : l'identifiant du propriétaire , l'identifiant du groupe