Initiation SE Objectifs : Comparaison de quelques algorithmes d'ordonnancement des processus Ex 1. Algorithmes d'ordonnancement sans réquisition Un processus n'est traité qu'au moment où le précédent se termine. 1.a "Premier arrivé, premier servi" (FIFO) Les processus sont traités dans leur ordre d'arrivée. Exemple : Processus Temps n° d'exécution 1 30 2 3 3 6 4 4 Si les processus arrivent dans l'ordre 1, 2, 3, 4, l'évolution de l'utilisation du processeur au cours du temps peut être représentée par un diagramme de Gantt : 30 P1 33 P2 39 P3 43 P4 Le temps moyen d'exécution (tme) se calcule alors ainsi : tme = 1/4 [ te(P1) + te(P2) + te (P3) + te(P4) ] = 1/4 (30+33+39+43) = 36,25 Donner le diagramme de Gantt et le tme pour un ordre d'arrivée 2, 3, 4, 1. 1.b "Plus court temps d'exécution d'abord" (PCTE) Le processus dont la phase de calcul est la plus courte est exécuté en premier, et ainsi de suite. Exemple: Processus Phase de calcul n° 1 7 2 12 3 5 4 15 5 P3 12 P1 24 P2 39 P4 Le temps moyen d'exécution (tme) se calcule alors ainsi : tme = 1/4 [ te(P1) + te(P2) + te (P3) + te(P4) ] = 1/4 (5+12+24+39) = 20 Donner le diagramme de Gantt et le tme en utilisant l'algorithme PCTE avec l'exemple 1.a Cet algorithme est optimal si les processus arrivent tous à t=0. Donnez un exemple où l'algorithme n'est plus optimal. Ex 2. Algorithmes d'ordonnancement avec réquisition 2.a PTCE avec réquisition (PTCER) Lorsque un processus arrive dans la file d'attente, on exécute celui qui se terminera le plus vite (en remettant éventuellement en attente celui qui était entrain de s'exécuter) Exemple : Processus n° Date de soumission Temps d'exécution 1 0 8 2 1 6 3 2 9 4 3 2 Donner le diagramme de Gantt et le tme pour le tableau ci-dessus. 2.a Le tourniquet Chaque processus reçoit un temps de calcul (quantum) dans l'ordre des demandes. Tout nouveau processus demandeur entre en fin de liste d'attente. Tout processus qui a épuisé son quantum se retrouve aussi en fin de liste. Donner le diagramme de Gantt et le tme en utilisant l'algorithme du tourniquet (quantum=2) avec l'ex. 2a. 2.b Tourniquet + priorités Chaque processus reçoit un niveau de priorité. On construit autant de tourniquets que de niveaux de difficulté. Une manière de gérer ces priorités consiste, par exemple, à allouer à chaque tourniquet un pourcentage de temps CPU plus ou moins grand. Avec 4 niveaux (de 0, le plus prioritaire, à 3) on peut répartir le temps CPU ainsi : tourniquet 0 : 40 % du temps CPU tourniquet 1 : 30 % du temps CPU tourniquet 2 : 20 % du temps CPU tourniquet 3 : 10 % du temps CPU Cette répartition se retrouve dans la table d'allocation CPU suivante : 0 x 1 x x x 2 x x 3 x x x x Lors des quantum 1, 4, 7 et 8 on exécute des processus du tourniquet 0 (s'ils existent, sinon on passe au tourniquet 1, etc…) Lors des quantum 2, 6, et 10 on exécute des processus du tourniquet 1 (…), etc… Donner(et comparer) le diagramme de Gantt et le tme en utilisant l'algorithme du tourniquet (quantum=2) puis l'algorithme du tourniquet (priorités 60%, 30%, 10%) avec priorité pour le problème suivant : Processus Date de n° soumission Temps Priorité d'exécution 1 0 7 0 2 0 4 2 3 1 6 1 4 1 1 2 5 1 2 0 6 2 4 1 7 2 1 1