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