TD2 : Ordonnancement 1 Ordonnancement FIFO 2

publicité
TD2
Principes des Systèmes et Réseaux
TD2 : Ordonnancement
1
Ordonnancement FIFO
À t = 0, La file des processus prêt contient les processus P1 (temps d’exécution 4 min) et P2 (temps
d’exécution 3min) dans cet ordre. À t = 1 min, un nouveau processus P3 (exécution 3 min) arrive et
finalement un processus P4 (exécution 5 min) à t = 3 min.
Le processus P2 fait une opération de lecture d’un fichier après 1min 30s d’exécution. Cette opération le
met en sommeil pendant 5s. Lorsqu’il se reveille, il est mis à la fin de la liste des processus prêts.
Question 1 : Simuler l’exécution de ces processus si l’ordonnancement utilise l’algorithme FIFO. Vous
indiquerez (par un graphique ou un tableau) à chaque instant le processus en cours d’exécution et l’état
dans lequel se trouvent tous les processus.
Question 2 : Même question avec l’algorithme FIFO avec priorités suivantes : (P1, 4) (P2, 5) (P3, 5) (P4, 3).
Question 3 : Calculer dans chaque cas le temps d’attente moyen.
2
Ordonnancement circulaire
Question 4 : Simulez l’algorithme d’ordonnancement circulaire (tourniquet) avec les 3 processus suivants :
P1 (exécution 25 ms), P2 (exécution 30 ms) et P3 (exécution 30 ms). Au départ, la liste des processus prêts
est P1 P2 P3. Le quantum vaut 10ms, le temps de commutation 1 ms.
Pour chaque processus, vous indiquerez à tout moment dans quel état il se trouve (prêt, en exécution,
sommeil).
Question 5 : Même question avec les processus suivants :
— P1 : exécution 50ms ;
— P2 : exécution 15ms, puis sommeil pendant 25ms puis exécution pendant 20ms ;
— P3 : exécution 50ms.
Au départ, la liste des processus prêts est P1 P2 P3. Le quantum vaut 10ms, on négligera le temps de
commutation et on suppose que les processus réveillés sont placés en début de la liste des processus prêts.
Question 6 : Même question mais maintenant les processus réveillés sont placés à la fin de la liste des
processus prêts.
3
Ordonnancement “optimal”
3 processus dont les temps d’exécution sont de 5, 2 et 12 minutes doivent être lancés sur un système de
traitement par lots (non interractif et sans temps partagé).
Question 7 : Dans quel ordre doivent-ils être lancés pour que le temps d’attente moyen soit minimum ?
Question 8 : D’une manière générale, comment faut-il choisir le prochain processus (parmi les processus
prêts) pour minimiser le temps d’attente moyen ?
Question 9 : Que se passe-t-il si un nouveau processus arrive à t=3min avec un temps d’exécution de 3min
et encore un autre à t=8min (exécution 3min).
L2 Informatique - 2015/2016
1
Emilie MORVANT
TD2
Principes des Systèmes et Réseaux
Question 10 : La question précédente met en lumière un gros défaut de cet algorithme, lequel à votre avis ?
4
Temps d’attente
5 processus sont lancés pratiquement simultanément sur un ordinateur. Leurs temps d’exécution sont
respectivement de 10, 6, 2, 4 et 8 minutes (dans l’ordre d’arrivée). Calculer le temps d’attente moyen pour
les algorithmes d’ordonnancement suivants :
— FIFO ;
— tourniquet (quantum 10ms)
— FIFO avec priorités fixes (priorités respectives des processus : 3, 5, 2, 1, 4) ;
— l’algorithme solution de l’exercice précédent.
On négligera le temps de commutation.
5
Ordonnancement circulaire 2
Question 11 : Simulez l’algorithme d’ordonnancement circulaire (tourniquet) avec les 3 processus suivants :
— P1 : exécution 10ms, puis sommeil pendant 35ms puis exécution pendant 15ms ;
— P2 : exécution 15ms, puis sommeil pendant 15ms puis exécution pendant 8ms ;
— P3 : exécution 10ms, puis sommeil pendant 23ms puis exécution pendant 15ms.
Au départ, la liste des processus prêts est P1 P2 P3. Le quantum vaut 10ms, on négligera le temps de
commutation et on suppose que les processus réveillés sont placés en début de la liste des processus prêts.
Pour chaque processus, vous indiquerez à tout moment dans quel état il se trouve (prêt, en exécution,
sommeil).
Question 12 : Même chose, mais avec des priorités statiques.
Priorité de P2 = 2 = priorité de P3 et priorité de P1 = 1.
Question 13 : Calculez l’efficacité de l’ordonnancement dans chacun des deux cas. L’efficacité est le rapport
entre la somme des temps utilisés par chacun des processus et le temps total.
6
Comparaison
On suppose qu’un processus de traitement a besoin de 5min 30s de temps processeur pour se terminer
(sans jamais faire d’E/S). Un processus d’E/S répète 300 fois : 0.1s de temps processeur consommé suivi par
1s de sommeil en attente d’une E/S.
Question 14 : Calculer le temps nécessaire pour chacun des deux scénario suivants (temps partagé, quantum
de 10ms) :
1. Deux processus de traitement sont lancés simultanément. Lorsqu’ils sont terminés, deux processus d’E/S
sont lancés.
2. Un processus de traitement et un processus d’E/S sont lancés simultanément. Lorsqu’ils sont terminés,
un autre processus de traitement et un autre processus d’E/S sont lancés.
7
Algorithme d’ordonnancement de linux
C’est un algorithme d’ordonnancement pour système à temps partagé. Ce qui veut dire que le processus
choisi par l’ordonnanceur pour être exécuté dispose au maximum d’un quantum de temps (10ms).
L2 Informatique - 2015/2016
2
Emilie MORVANT
TD2
Principes des Systèmes et Réseaux
Les processus sont répartis dans 2 listes : la liste des processus prêts (notée LPP) et la liste des processus
en sommeil (notée LPS).
Les deux caractéristiques suivantes de chaque processus p sont utilisées pour l’ordonnancement :
— le niveau de “nice” du processus (noté p.nice). Le nice est un entier entre -20 et 19 (inclus).
— le compteur (noté p.compteur) : un entier décrémenté de 1 à chaque fois que le processus est choisi
par l’ordonnanceur pour être exécuté (cf. la dernière ligne de l’algorithme). Lorsqu’un processus est
créé, cette valeur est initialisée à (20 − p.nice)/4 + 1 (attention, c’est une division entière).
L’algorithme d’ordonnancement est appelé à chaque fin de quantum par le SE pour choisir le nouveau
processus à exécuter parmi la liste LPP. Le nouveau processus à executer est celui qui se trouve dans la
variable suivant à la fin de l’algorithme ci-dessous.
Cet algorithme utilise une fonction goodness qui calcule une valeur de “goodness” pour chaque processus.
Cette fonction est donnée plus bas.
Algorithme d’ordonnancement
début :
c = -1000;
pour chaque processus p de la liste LPP faire {
poids = goodness(p);
si (poids > c) {
c = poids;
suivant = p;
}
}
if (c == 0) {
pour chaque processus p des listes LPP et LPS faire {
p.compteur = (p.compteur/2) + (20 - p.nice)/4 + 1; /* division entière ! */
}
retourner au début de l’algorithme;
}
/* suivant contient maintenant le prochain processus à exécuter */
suivant.compteur = suivant.compteur - 1;
Fin
fonction goodness
entree : un processus p
sortie : la valeur de goodness pour ce processus
{
if (p.compteur != 0)
return (p.compteur + 20 - p.nice);
else
return 0;
}
Question 15 : À quelles valeurs les compteurs des processus suivant sont-ils initialisés ?
— un processus de nice 19 ;
— un processus de nice 12 ;
L2 Informatique - 2015/2016
3
Emilie MORVANT
TD2
Principes des Systèmes et Réseaux
— un processus de nice 0.
Question 16 : Question préliminaire : expliquez en une phrase ce que fait la première boucle pour chaque
processus p de la liste LPP (en particulier que valent les variables c et suivant à la fin de cette boucle ?)
Simuler l’ordonnancement pendant 10 quantums de temps pour les processus suivants :
— 3 processus prêts : P1 (nice = 19), P2 (nice = 12), P3 (nice = 12) ;
— 1 processus en sommeil (et qui le reste pendant les 10 quantums) P4 (nice = 12).
Vous indiquerez la valeur de la goodness du compteur au début de chaque quantum (juste après
avoir exécuté l’algorithme d’ordonnancement) et pour chacun des 4 processus. On néglige les temps de
commutation. Les valeurs initiales des compteurs sont celles calculées dans la question précédente.
Question 17 : Que va-t-il se passer pendant les quantums suivants (les processus prêts sont les mêmes et le
processus 4 reste en sommeil) ? Quelle va être la valeur maximale atteinte par le compteur du processus 4 ?
Question 18 : À quel moment la boucle pour chaque processus p des listes LPP et LPS est-elle
exécutée ? À quoi sert elle ? À quoi sert le p.compteur/2 ?
Question 19 : Quelle valeur maximum peut atteindre le compteur d’un processus en fonction de son nice ?
(indication : considérer des processus en sommeil).
Question 20 : Quelle est la proportion du temps processeur utilisée par chacun des processus P1, P2 et P3
(en supposant qu’ils s’exécutent pendant un temps suffisamment long) ?
Question 21 : Comment peut on calculer ces valeurs sans avoir à faire la simulation complète (Comme dans
la question 2). Faites le pour les 2 cas suivants (les processus ne sont jamais en sommeil) :
— 2 processus en nice 0, un processus en nice 19 ;
— 3 processus en nice 0, 2 processus en nice 12.
Question 22 : À quoi sert la valeur de nice ?
Question 23 : Peut-on avoir une situation de famine avec cet algorithme d’ordonnancement dans les deux
cas suivant et pourquoi ?
1. s’il n’y a pas de création de nouveaux processus ;
2. s’il y en a.
L2 Informatique - 2015/2016
4
Emilie MORVANT
Téléchargement