corrigé

Transcription

corrigé
ASR2 - L3 Informatique - ENS Lyon
Année 2014-2015
R. Carpa, A. Cavelan et A.Lefray
TP/TD 6 : Ordonnancement
Ordonnancement monoprocesseur
Soit 4 processus ayant les temps d’arrivée et de temps de calcul suivant :
P1
P2
P3
P4
Arrivée
0
1
3
5
Temps CPU
5
2
1
2
1. Donner le diagramme de Gantt, le débit, le temps de retournement moyen, le temps d’attente
moyen et le temps de réponse moyen pour :
- FCFS
- SJF non préemptif
- RR, quantum = 2 (les processus sont mis en fin de queue lorsqu’ils sont prêts)
Solution:
Algo
1 2 3 4
FCFS
P1
SJF
P1
RR
P1
P2
5
Temps
6
7
8 9 10
P2
P3
P4
P3
P2
P4
P1
P3
P4
P1
Débit
Latency
Waiting
Response
0.4/unit
0.4/unit
0.4/unit
5.25
5
5.25
2.75
2.5
2.75
2.75
2.5
1.5
2. Pour le(s)quel(s) de ces algorithmes y a-t-il un risque de famine et pourquoi ?
Solution:
FCFS : Famine si un processus est bloqué (généralement considéré comme sans famine).
SJF : Famine si plein de petits jobs.
3. Comment résoudre le problème de famine ?
Solution:
Problème pour les ordonnancement à priorité fixe : Vieillissement pour obtenir des priorités
dynamiques qui augmente avec le temps.
Inversion de priorité
Soit 3 processus ayant les temps d’arrivé, temps de calcul et priorités suivants :
P1
P2
P3
Arrivée
0
2
4
Temps CPU
4
4
5
1
Priorité
1
2
3
1. Donner le diagramme de Gantt en considérant un ordonnancement préemptif avec priorité (highest
priority first) et le temps d’attente de chaque processus
Solution:
Temps
6 7 8 9
1 2 3 4 5
10 11
P1
P2
P3
W ait(P1 ) = 9, W ait(P2 ) = 5, W ait(P3 ) = 0
12
13
Supposons maintenant un sémaphore S partagé entre P1 et P3 tel que :
- P1 et P3 prennent S après 1 unité de leur temps de calcul (t + 1)
- P1 et P3 gardent le sémaphore pendant 2 unités de temps
2. Donner le diagramme de Gantt (même ordonnancement) et le temps d’attente de chaque processus.
Quel est le problème ? Donner une (des) solution(s)
Solution:
W ait(P1 ) = 9, W ait(P2 ) = 1, W ait(P3 ) = 3 : problème d’inversion de priorité
Solutions :
héritage de priorité = la tâche détenant le sémaphore hérite de la plus haute priorité des processus
bloqués en attente du même sémaphore (puis revient à sa priorité initiale).
plafonnement de priorité = les sémaphores ont une priorité fixée égale à la priorité max des
processus qui vont l’utiliser. Un tâche ne prend un sémaphore que si sa priorité est strictement
supérieure à toutes les priorités plafonnées des sémaphores utilisées
3. Donner le diagramme de Gantt (même ordonnancement avec héritage de priorité) et le temps
d’attente de chaque processus. L’interblocage est-il possible avec un tel protocole ?
Solution:
2
W ait(P1 ) = 9, W ait(P2 ) = 6, W ait(P3 ) = 3
L’interblocage est possible ! Il n’y a pas d’ordre sur les sémaphore donc cycle possible.
Ordonnancement temps-réel
Dans un système embarqué (type Mars Pathfinder), le critère n’est pas la vitesse (ou performance)
mais la ponctualité ! Un système temps-réel doit exécuter un ensemble de tâches donc la criticité varie.
Pour un avion, on sera plus intéressé à exécuter à temps les calculs de trajectoire qu’une diffusion de
films fluide pour les passagers.
Une tâche peut être modélisées par un quadruplet (ri , Ci , Di , Ti ) où
— ri correspond à la date réveil (relative) de la tâche ;
— Ci correspond au pire temps d’exécution de la tâche ;
— Di correspond à l’échéance relative de la tâche ;
— Ti correspond à la période de la tâche.
En temps-réel, une tâche est classifiée en :
— Tâche périodique : elle a une période et un temps au pire.
— Tâche apériodique : elle est activée à un instant aléatoire et a un temps au pire. On parle plutôt
d’évènement.
— Tâche sporadique : elle a un délai minimum entre deux activations et un temps au pire. (assimilée
aux tâches apériodiques)
Par la suite on ne considérera que des tâches périodiques (indépendantes) avec ri = 0 (départ
de la tâche au début de sa période) et Di = Ti (l’échéance correspond à la fin de la période). On
définit
Ple taux d’utilisation du CPU pour une tâche i noté Ui = Ci /Ti . Et le taux d’utilisation globale
U = (Ui ).
L’ordonnancement par priorité statique (Rate Monotonic Scheduling - RMS) choisit la tâche de
plus courte période. L’ordonnanceur est sollicité à chaque activation de tâche (début de période ici).
Soit un système temps-réel avec les 3 tâches périodiques suivantes :
t1
t2
t3
Période (Ti )
5
15
3
Calcul (Ci )
2
4
1
1. Donner les taux d’utilisation CPU de chaque tâche.
Solution:
t1 = 0.4, t2 = 0.267, t3 = 0.333
3
Pour RMS, la condition d’ordonnancement nécessaire est U ≤ 1 et la condition suffisante est
U ≤ n(21/n − 1) avec n tâches.
2. La condition nécessaire est-elle respectée ? La condition suffisante est-elle respectée ?
Solution:
U=1 donc nécessaire oui, suffisante non (> à 3 × (21/3 − 1) = 0.78)
Pour déterminer si un ensemble de tâche est ordonnaçable, une méthode consiste à dérouler l’exécution des tâches sur l’hyper-période. L’hyper-période est définie comme le PPCM des périodes.
a×b
On rappelle que P P CM (a, b, c) = P P CM (P P CM (a, b), c) et P P CM (a, b) = P GCD(a,b)
3. Calculer l’hyper-période
Solution:
ppcm(5, 15, 3) = ppcm(ppcm(5, 15), 3) = ppcm(15, 3) = 15
4. Donner le diagramme de Gantt jusqu’à l’hyper-période pour l’algorithm RMS. Est-ce ordonnançable ?
Solution:
Ordonnançable ! Ci-dessous t1 en jaune, t2 en vert, t3 en bleu
4