Ordonnancement de la CPU Abdelouahed Gherbi Hiver 2014 LOG 710 Hiver2014 1 Plan • Concepts de base – – – – Cycle CPU – Cycle E/S Ordonnanceur de CPU Ordonnancement préemptif (avec réquisition) Critères d’ordonnancement • Algorithmes d’ordonnancement – – – – – – Ordonnancement du premier arrivé, premier servi (FCFS) Ordonnancement du travail le plus court d’abord (SJF) Ordonnancement avec priorité Ordonnancement à tourniquet (Round-Robin) Ordonnancement avec files multiniveaux Ordonnancement avec files multiniveaux avec retour LOG 710 Hiver2014 2 Introduction • Ordonnancement de la CPU (CPU scheduling) – Est à la base des OS multiprogrammés • La commutation (switching) de la CPU entre plusieurs processus permet de rendre l’ordinateur plus productif • Dans ce cours – Introduction des concepts de base de l’ordonnancement de la CPU – Présentation de quelques algorithmes d’ordonnancement LOG 710 Hiver2014 3 Concepts de base LOG 710 Hiver2014 4 Ordonnancement • Dans un monoprocesseur – Un seul processus est en exécution à un instant donné – Les autres processus soit ils attendent que la CPU soit libre (processus prêts) soit qu’Ils attendent un évènement (fin d’E/S, libération d’une ressource) • La multiprogrammation permet d’avoir un processus en exécution en tout temps (maximiser l’utilisation de la CPU) – – – – – Un processus s’exécute jusqu’au moment où il doit attendre Typiquement : attendre la terminaison d’une requête d’E/S Sans la multiprogrammation : la CPU est oisive (idle) perte de temps. Avec la multiprogrammation : ce temps est utilisé productivement Quand un processus doit attendre : OS assigne la CPU à un autre processus • Ce patron se répète – à chaque fois qu’un processus doit attendre, un autre processus prend la CPU • Ceci est une fonction fondamentale de l’OS : Ordonnancement LOG 710 Hiver2014 5 Cycle CPU – Cycle E/S • L’exécution d’un processus consiste en une alternance – Cycle CPU – Cycle E/S • Les durées des cycles CPU ont été mesurés extensivement – Variation entre processus et ordis – Une tendance : plusieurs cycle courts de CPU et quelques longs cycles CPU Alternance cycle CPU-cycle E/S [1] Distribution typique des cycles CPU [1] LOG 710 Hiver2014 6 Ordonnanceur de CPU • A chaque fois qu’un processus deviens oisif (idle) – OS doit sélectionner un processus dans la file des processus prêts pour lui assigner la CPU • Cette sélection est effectuée par l’ordonnanceur à court terme (ordonnanceur de CPU) LOG 710 Hiver2014 7 Quand est ce qu’on décide d’ordonnancer ? • La décision d’ordonnancement est prise quand : 1. 2. 3. 4. 5. Un nouveau processus est admis dans la file des processus prêt Un processus passe de l’état en exécution à l’état en attente Un processus passe de l’état en exécution à l’état prêt Un processus passe de l’état en attente à l’état prêt Un processus passe à l’état terminé • Dans les cas 2 et 5 : – pas de choix d’ordonnancement – un nouveau processus de la file prêt (s’Il y en a) doit être sélectionné. Diagramme de transition d’états des processus [1] • Dans les cas 1, 3 et 4: – Il y a un choix LOG 710 Hiver2014 8 Ordonnancement préemptif • Quand l’ordonnancement se fait seulement dans les cas 2 et 5 – Ordonnancement non préemptif ou coopératif (sans réquisition) – Une fois la CPU est attribuée à un processus, il garde la CPU jusqu’à ce qu’il la libère en terminant ou il quand il doit attendre • Sinon : – Ordonnancement préemptif (avec réquisition) LOG 710 Hiver2014 9 Dispatcheur • Module qui donne le contrôle de la CPU à un processus qui a été sélectionné par l’ordonnanceur • La fonction du dispatcheur inclut : – La commutation de contexte – Le passage au mode utilisateur – Le branchement vers la l’emplacement appropriée dans le code du processus sélectionné pour le démarrer • Le dispatcheur doit être très rapide car il est invoqué dans chaque commutation de contexte • Le temps pris par un dispatcheur d’arrêter un processus et démarrer un autre est appelée latence de dispatch LOG 710 Hiver2014 10 Critères d’ordonnancement • Plusieurs critères peuvent être utilisés pour comparer les algorithmes d’ordonnancement • Utilisation de la CPU – On désire occuper la CPU le plus possible – Conceptuellement : 0 à 100% mais pratiquement 40% - 90% • Débit (throughput) – Nombre de processus complétés par unité de temps – Processus long : 1 processus / heure – transaction courtes : 10 processus /sec • Temps de rotation (turnaround time) – Perspective d’un processus particulier : temps pris pour exécuter complétement un processus – Intervalle de temps entre la soumission de ce processus et son achèvement – La somme des périodes d’attente dans les files, d’E/S et d’exécution • Temps d’attente – L’algorithme d’ordonnancement n’affecte pas le temps durant lequel le processus s’exécute ou attend une E/S – Il affecte le temps durant lequel le processus attend dans la file des processus prêt – Temps d’attente : la somme des périodes passées en attente dans la file des processus prêts • Temps de réponse – Dans un système interactif, le temps de rotation n’est pas nécessairement le meilleur critère – Un processus peut rapidement produire des sorties et continuer à calculer d’autres résultats pendant que les premières sorties sont données à l’utilisateur – Temps de réponse : • • temps entre la soumission d’une requête et le production de la première réponse Temps nécessaire pour commencer à répondre et non le temps pour sortir cette réponse LOG 710 Hiver2014 11 Algorithmes d’ordonnancement LOG 710 Hiver2014 12 Premier arrivé premier servi (FCFS) • Le plus simple algorithme d’ordonnancement • Le premier processus qui demande la CPU la reçoit en premier • L’implémentation de FCFS est facilement gérée par une file FIFO • Quand un processus entre dans la file des processus prêt, sont PCB est chainé à la fin de la file • Lorsque la CPU est libérée, on l’alloue au processus en tête de la file • Le processus en cours d’exécution est alors retiré de la file • Le code de FCFS est simple à écrire et à comprendre • Le temps d’attente moyen avec FCFS est souvent long !!! LOG 710 Hiver2014 13 Premier arrivé premier servi (FCFS) • On considère l’ensemble des processus suivants : Processus Cycle CPU P1 24 P2 3 P3 3 • On suppose que les processus arrivent à l’instant 0 et admis dans l’ordre : P1 , P2 , P3 • Le diagramme de Gantt pour l’ordonnancement FCFS de cet ensemble est : • Temps d’attente pour P1 = 0; P2 = 24; P3 = 27 • Temps d’attente moyen : (0 + 24 + 27)/3 = 17 LOG 710 Hiver2014 14 Premier arrivé premier servi (FCFS) • Supposons que les processus arrivent dans l’ordre P2 , P3 , P1 • Le diagramme de Gantt pour l’ordonnancement FCFS est : • Temps d’attente P1 = 6; P2 = 0; P3 = 3 • Temps d’attente moyen est: (6 + 0 + 3)/3 = 3 • On obtient donc une réduction substantielle • Temps d’attente moyen sous FCFS n’est pas minimal et peut varier substantiellement si le temps des cycles CPU varient d’une manière importante. • Note : FCFS est non préemptif (sans réquisition) • Est-ce que FCFS est adéquat pour les système à temps partagé (time sharing)? LOG 710 Hiver2014 15 Travail le plus court d’abord (SJF) • Shortest job first (SJF) • SJF associe à chaque processus la longueur du prochain cycle CPU • Lorsque la CPU est disponible, on l’alloue au processus ayant le plus petit prochain cycle CPU • Si les prochains cycles CPU de deux processus sont identiques, on utilise FCFS (tie break !!) LOG 710 Hiver2014 16 Travail le plus court d’abord (SJF) • On considère l’ensemble de processus suivant : Processus Cycle CPU P1 6 P2 8 P3 7 P4 3 • Le diagramme de Gantt avec SJF est : • Temps d’attente P1 = 3, P2 = 16; P3 = 9 et P 4 = 0 • Temps d’attente moyen est = (3 + 16 + 9 + 0) / 4 = 7 • Exercice : Par comparaison avec FCFS on obtient un temps d’attente = ? LOG 710 Hiver2014 17 Travail le plus court d’abord (SJF) • On considère l’ensemble de processus suivant : Processus Cycle CPU P1 6 P2 8 P3 7 P4 3 • Le diagramme de Gantt avec SJF est : • Temps d’attente P1 = 3, P2 = 16; P3 = 9 et P 4 = 0 • Temps d’attente moyen est = (3 + 16 + 9 + 0) / 4 = 7 • Par comparaison avec FCFS on obtient un temps d’attente = 10.25 LOG 710 Hiver2014 18 Travail le plus court d’abord (SJF) • L’algorithme SJF est optimal : – Il obtient le temps d’attente moyen minimal pour un ensemble de processus donné – En déplaçant un processus court avant un long, on diminue le temps d’attente du processus court plus qu’on augmente le temps d’attente du processus long. • Cependant SJF a un défi majeur ! Lequel ? LOG 710 Hiver2014 19 Travail le plus court d’abord (SJF) • L’algorithme SJF est optimal : – Il obtient le temps d’attente moyen minimal pour un ensemble de processus donné – En déplaçant un processus court avant un long, on diminue le temps d’attente du processus court plus qu’on augmente le temps d’attente du processus long. • Cependant SJF a un défi majeur ! Lequel ? • La difficulté réelle de SJF est de connaitre à l’avance la longueur du prochain cycle CPU • Solution : Technique de prédiction LOG 710 Hiver2014 20 Travail le plus court d’abord (SJF) • L’algorithme SJF peut être préemptif ou non préemptif • Le choix survient quand un nouveau processus arrive dans la file des processus prêts. • Le prochain cycle de CPU du nouveau processus peut être plus court que ce qu’il reste à exécuter du processus en cours d’exécution. • Un algorithme SJF préemptif interrompt le processus en cours alors qu’un algorithme SJF non préemptif le laisse compléter son cycle CPU. • Un algorithme SJF préemptif s’appelle aussi ordonnancement au temps restant le plus court d’abord (shortest remaining time first) LOG 710 Hiver2014 21 Travail le plus court d’abord (SJF) • On considère l’ensemble de processus suivant : Processus Temps d’arrivée Cycle CPU P1 0 8 P2 1 4 P3 2 9 P4 3 5 • Le diagramme de Gantt avec SJF préemptif est comme suit : • Quel est le temps d’attente moyen des processus ? LOG 710 Hiver2014 22 Travail le plus court d’abord (SJF) • On considère l’ensemble de processus suivant : Processus Temps d’arrivée Cycle CPU P1 0 8 P2 1 4 P3 2 9 P4 3 5 • Le diagramme de Gantt avec SJF préemptif est comme suit : • Temps d’attente P1 = 10 -1, P2 = 0; P3 = 17-2 et P 4 = 5-3 • Temps d’attente moyen est = [(10-1) + (1-1) + (17-2) + (5-3)] / 4 = 6.5 • Exercice : Par comparaison avec un SJF non préemptif on obtient un temps d’attente = ? LOG 710 Hiver2014 23 Travail le plus court d’abord (SJF) • On considère l’ensemble de processus suivant : Processus Temps d’arrivée Cycle CPU P1 0 8 P2 1 4 P3 2 9 P4 3 5 • Le diagramme de Gantt avec SJF préemptif est comme suit : • Temps d’attente P1 = 10 -1, P2 = 0; P3 = 17-2 et P 4 = 5-3 • Temps d’attente moyen est = [(10-1) + (1-1) + (17-2) + (5-3)] / 4 = 6.5 • Par comparaison avec un SJF non préemptif on obtient un temps d’attente = 7.75 LOG 710 Hiver2014 24 Exercice 01 LOG 710 Hiver2014 25 Ordonnancement avec priorité • L’algorithme SJF est un cas particulier d’un algorithme général d’ordonnancement avec priorité • Une priorité est associée avec chaque processus • La CPU est allouée au processus ayant la plus haute priorité • Les processus ayant une même priorité sont ordonnancés selon le FCFS. • Question : Quelle est la priorité dans le cas de SJF ? LOG 710 Hiver2014 26 Ordonnancement avec priorité • • On considère l’ensemble de processus suivants qui arrivent à l’instant 0 Les nombres les plus petits représentent les priorités les plus hautes Processus Cycle CPU Priorité P1 10 3 P2 1 1 P3 2 4 P4 1 5 P5 5 2 • Le diagramme de Gantt avec un ordonnancement avec priorité est comme suit : • Temps d’attente moyen est = 8.2 LOG 710 Hiver2014 27 Ordonnancement avec priorité • L’ordonnancement avec priorité peut être préemptif ou non préemptif • Un algorithme d’ordonnancement avec priorité préemptif interrompt le processus courant – si un processus arrive dans la file des processus prêt – Et si le nouveau processus a une priorité plus haute que celle du processus en cours. • Un algorithme d’ordonnancement avec priorité non préemptif – Dépose le nouveau processus en tête de la file des processus prêt • Un algorithme d’ordonnancement avec priorité pose un problème majeur. Lequel ? LOG 710 Hiver2014 28 Ordonnancement avec priorité • L’ordonnancement avec priorité peut être préemptif ou non préemptif • Un algorithme d’ordonnancement avec priorité préemptif interrompt le processus courant – si un processus arrive dans la file des processus prêt – Et si le nouveau processus a une priorité plus haute que celle du processus en cours. • Un algorithme d’ordonnancement avec priorité non préemptif – Dépose le nouveau processus en tête de la file des processus prêt • Un algorithme d’ordonnancement avec priorité pose un problème majeur – Blocage infini ou famine (starvation) – Peut laisser des processus à priorité basse en attente indéfinie • Solution ? LOG 710 Hiver2014 29 Ordonnancement avec priorité • L’ordonnancement avec priorité peut être préemptif ou non préemptif • Un algorithme d’ordonnancement avec priorité préemptif interrompt le processus courant – si un processus arrive dans la file des processus prêt – Et si le nouveau processus a une priorité plus haute que celle du processus en cours. • Un algorithme d’ordonnancement avec priorité non préemptif – Dépose le nouveau processus en tête de la file des processus prêt • Un algorithme d’ordonnancement avec priorité pose un problème majeur – Blocage infini ou famine (starvation) – Peut laisser des processus à priorité basse en attente indéfinie • Solution : – Vieillissement (aging) – Technique qui consiste à incrémenter graduellement la priorité des processus qui attendent dans le système depuis une longue période. LOG 710 Hiver2014 30 Ordonnancement à tourniquet (Round-Robin) • L’algorithme d’ordonnancement à tourniquet (Round-Robin : RR) est conçu spécialement pour les systèmes à temps partagé • Similaire à FCFS mais avec réquisition de la CPU afin de passer d’un processus à un autre • On définit une petite unité de temps appelée quantum de temps (tranche) • La file des processus prêt est gérée comme une file circulaire • L’ordonnanceur se déplace dans la file en allouant la CPU au processus pour un intervalle de temps maximal égale au quantum • Implémentation de RR: – Varie entre 10 et 100 millisecondes – La file des processus prêt est une FIFO circulaire – Nouveau processus sont ajoutés à la fin de la file – Ordonnanceur RR prend le premier processus dans la file, initialise un timer pour générer une interruption après un quantum de temps et lance le processus – Premier cas : • le processus a un cycle CPU inférieure au quantum : il va libérer lui-même la CPU et RR passe au processus suivant dans la file des processus prêt – Deuxième cas : • Le cycle CPU du processus est plus long que le quantum: le timer va générer une interruption; en traitant cette interruption, l’OS va mette le processus en fin de la file et RR sélectionne le prochain processus LOG 710 Hiver2014 31 Ordonnancement à tourniquet (Round-Robin) • Le temps d’attente avec RR est souvent plus long • On considère l’ensemble des processus suivants arrivant à l’instant 0 et un quantum de temps q = 4 Processus Cycle CPU P1 24 P2 3 P3 3 • Le diagramme de Gantt pour l’ordonnancement RR avec q = 4 est comme suit : • Temps d’attente moyen = 5.66 LOG 710 Hiver2014 32 Ordonnancement à tourniquet (Round-Robin) • La performance de RR dépends beaucoup de la taille du quantum de temps • Si on a un quantum de temps très grand : RR est similaire à FCFS • La commutation de contexte a aussi un impact sur la performance de RR • Exemple Impact de la taille du Quantum de temps sur le nombre de commutation de contexte [1] • Le quantum de temps doit être plus grand que le temps nécessaire à une commutation de contexte mais pas trop grand pour ne pas devenir un FCFS LOG 710 Hiver2014 33 Exercice 02 LOG 710 Hiver2014 34 Ordonnancement utilisant des files multi-niveaux • Les processus peuvent être dans différentes catégories – – – Exemple: processus en avant-plan (interactifs) et processus en arrière-plan (batch processes) Des exigences différentes en temps de réponses Besoins différents en ordonnancement • Avec un algorithme d’ordonnancement utilisant des files multiniveaux, la file des processus prêt est partitionnée en plusieurs files d’attentes séparées • Chaque file a son propre algorithme d’ordonnancement – – • La file des processus en avant plan : – RR La file des processus en arrière plan – FCFS En plus, il y a un ordonnancement entre les files d’attentes – – Typiquement : un ordonnancement préemptif avec priorités fixes; (i.e., servir tous les processus en avant plan avant les processus en arrière plan). Files d’ordonnancement multi-niveaux [1] Utiliser une tranche de temps : chaque file obtient une portion du temps de la CPU; P.ex. 80% pour les processus en avant plan avec RR et 20% pour les processus en arrière plan avec FCFS LOG 710 Hiver2014 35 Ordonnancement utilisant des files multi-niveaux • Les processus peuvent être dans différentes catégories – – – Exemple: processus en avant-plan (interactifs) et processus en arrière-plan (batch processes) Des exigences différentes en temps de réponses Besoins différents en ordonnancement • Avec un algorithme d’ordonnancement utilisant des files multiniveaux, la file des processus prêt est partitionnée en plusieurs files d’attentes séparées • Chaque file a son propre algorithme d’ordonnancement – – • La file des processus en avant plan : – RR La file des processus en arrière plan – FCFS Files d’ordonnancement multi-niveaux [1] En plus, il y a un ordonnancement entre les files d’attentes – Typiquement : un ordonnancement préemptif avec priorités fixes; (i.e., servir tous les processus en avant plan avant les processus en arrière plan). – Utiliser une tranche de temps : chaque file obtient une portion du temps de la CPU; P.ex. 80% pour les processus en avant plan avec RR et 20% pour les processus en arrière plan avec FCFS LOG 710 Hiver2014 Files d’ordonnancement multi-niveaux Figure modifée par Abdel 36 Ordonnancement utilisant des files multi-niveaux avec retour • Dans un algorithme d’ordonnancement à files multiniveaux – Processus sont affectés d’une manière permanente à une file d’attente particulière – Les processus ne se déplacent pas entre les files – Avantage : limiter le surcoût (overhead) d’ordonnancement – Inconvénient : pas de flexibilité • Ordonnancement utilisant des files multi-niveaux avec retour – Un processus peut passer d’une file à une autre • Principe : – Séparer les processus selon les caractéristiques de leur cycles CPU – Si un processus utilise trop le temps de CPU, il est déplacé vers une file de priorité plus basse • Résultat : Les processus tributaire d’E/S et interactifs demeurent dans les files de plus haute priorité – Un processus qui attend trop longtemps dans une file de priorité basse peut être déplacé vers une file plus haute priorité • Cette forme de vieillissement permet de combattre la famine (starvation) LOG 710 Hiver2014 37 Ordonnancement utilisant des files multi-niveaux avec retour • Exemple : Ordonnancement utilisant trois (03) files multi-niveaux avec retour • Ordonnanceur exécutent tous les processus dans la file 0, ensuite (quand la file 0 est vide) les processus de la file 1 et finalement la file 2 • Un processus qui arrive dans la file i va interrompre un processus de la file i+1 • Un nouveau processus prêt est initialement mis dans la file 0 • Un processus de la file 0 est donné un quantum de 8 • – S’il ne termine pas il est déplacé vers la file 1. Quand la file 0 est vide, le processus en tête de la file 1 est donné un quantum de 16 – S’il ne termine pas il est déplacé vers la file 2 • Les processus de la file 2 sont exécutés selon FCFS seulement quand la file 0 et 1 sont vides. • Cet ordonnancement favorise les processus ayant un cycle CPU de 8 ou moins. Les processus entre 8 et 16 sont servis aussi rapidement Files d’ordonnancement multiniveaux mais avec moins de priorité. Les processus longs finissent par être avec retour [1] servis en FCFS avec moins de priorité LOG 710 Hiver2014 38 Ordonnancement utilisant des files multi-niveaux avec retour • En général, un ordonnancement avec files multiniveaux avec retour est défini par les paramètres suivant : – Nombre de files – Algorithme d’ordonnancement pour chaque file – Méthode utilisée pour déplacer un processus vers une file de plus haute priorité – Méthode utilisée pour déplacer un processus vers une file de plus faible priorité – Méthode utilisée pour déterminée la file initiale d’un processus • Un ordonnancement avec files multi-niveaux avec retour est le plus général mais aussi le plus complexe (il faut configurer ses paramètres) LOG 710 Hiver2014 Files d’ordonnancement multiniveaux avec retour [1] 39 Références [1] SILBERSCHATZ, A. et P.B. GALVIN, Operating System Concepts. 8th Edition, Addison Wesley. LOG 710 Hiver2014 40