Ordonnancement du CPU Concepts de Base Critères d’Ordonnancement

Slides:



Advertisements
Présentations similaires
LES NOMBRES PREMIERS ET COMPOSÉS
Advertisements

[number 1-100].
Qualité du Premier Billot. 2 3 Défauts reliés à labattage.
1. Résumé 2 Présentation du créateur 3 Présentation du projet 4.
Licence pro MPCQ : Cours
Distance inter-locuteur
1 Plus loin dans lutilisation de Windows Vista ©Yves Roger Cornil - 2 août
Les numéros
GEF 435 Principes des systèmes dexploitation Ordonnancement partie I (Tanenbaum 2.5)
GEF 435 Principes des systèmes d’exploitations
Cours n°2M2. IST-IE (S. Sidhom) UE 303 Promo. M2 IST-IE 2005/06 Conception dun système d'information multimédia Architecture trois-tiers : PHP/MySQL &
F. Pascual - Laboratoire d’Informatique de Grenoble
Mémoire & Processus Cours SE - SRC
La diapo suivante pour faire des algorithmes (colorier les ampoules …à varier pour éviter le « copiage ») et dénombrer (Entoure dans la bande numérique.
Ordonnancement des mouvements de deux robots
Analyse de la variance à un facteur
Minimisation Techniques 1 Assimilation Algorithms: Minimisation Techniques Yannick Trémolet ECMWF Data Assimilation Training Course March 2006.
Ordonnancement Processus
Mr: Lamloum Med LES NOMBRES PREMIERS ET COMPOSÉS Mr: Lamloum Med.
6.1 URDL22005 Systèmes dexploitation Ordonnancement du CPU Concepts de Base Critères dOrdonnancement Algorithmes dOrdonnancement Ordonnancement Multi-Processeur.
Module 4 - Ordonnancement Processus
Rappel // Basé sur le cours de Dr. Jaber Jemai
Synchronisation et communication entre processus
Serveurs Partagés Oracle
Cours de physique générale I Ph 11
Chapitre 2 Système d’Exploitation Gestion des Processus
Titre : Implémentation des éléments finis sous Matlab
1 Journée de regroupement des correspondants "Egalité et genre" - 21 novembre 2011 Rectorat de Rouen - SAIO - CD-HD Résultats scolaires, appréciations.
Projet poker 1/56. Introduction Présentation de léquipe Cadre du projet Enjeux Choix du sujet 2.
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
LES NOMBRES PREMIERS ET COMPOSÉS
5.1 URDL22005 Systèmes dexploitation Threads Vue dEnsemble Modèles de Multithreading Problèmes des Threads Pthreads Threads Windows XP Threads Linux Threads.
Partie 1: Ondes et Particules.
Les tâches suivantes doivent être exécutées P3 P2 P1 CPU processustemps d'arrivée temps d'exécution priorité P1553 P2311 P3223 P4114 * P est la plus.
1 INETOP
8.1 URDL22005 Systèmes dexploitation Interblocages Modèle Système Caractérisation dinterblocage Méthodes pour Gérer les Interblocages Prévention des Interblocages.
Représentation des systèmes dynamiques dans l’espace d’état
Systèmes mécaniques et électriques
Représentation des systèmes dynamiques dans l’espace d’état
Représentation des systèmes dynamiques dans l’espace d’état
Programmation linéaire en nombres entiers Algorithme de la subdivision successive («Branch and Bound Algorithm»)
3.27 ALLOCATION DU CPU Critères :
DUMP GAUCHE INTERFERENCES AVEC BOITIERS IFS D.G. – Le – 1/56.
Programmation concurrente
Module 4 - Ordonnancement Processus
1 Licence dinformatique Algorithmique des graphes Problèmes dordonnancement. Utilisation de ce document strictement réservée aux étudiants de l IFSIC dans.
Tournoi de Flyball Bouin-Plumoison 2008 Tournoi de Flyball
Performance des algorithmes à véracité garantie pour l'ordonnancement de tâches individualistes F. Pascual - LIG En collaboration avec : G. Christodoulou,
Titre : Implémentation des éléments finis en Matlab
Ordonnancement de tâches
Synchronisation Classique
Équipe 2626 Octobre 2011 Jean Lavoie ing. M.Sc.A.
P.A. MARQUES S.A.S Z.I. de la Moussière F DROUE Tél.: + 33 (0) Fax + 33 (0)
LA GESTION COLLABORATIVE DE PROJETS Grâce aux outils du Web /03/2011 Académie de Créteil - Nadine DUDRAGNE 1.
L ’Ordonnancement Ordonnancement.
Structures des données
Traitement de différentes préoccupations Le 28 octobre et 4 novembre 2010.
1/65 微距摄影 美丽的微距摄影 Encore une belle leçon de Macrophotographies venant du Soleil Levant Louis.
Equation différentielle de 2ème ordre
CALENDRIER-PLAYBOY 2020.
Gérer la sécurité des mots de passe et les ressources
LES PILES ET FILES.
Cours des Systèmes d’exploitations
Gestion de processus Corrigé TD 1 EFREI I
Les Chiffres Prêts?
Elles avaient envahi le jardin, mais derrière... 1.
Programmation Système et Réseau
Pthread Ordonnancement. #define _MULTI_THREADED #include #ifndef _CHECK_H #define _CHECK_H /* headers used by a majority of the example program */ #include.
Ordonnancement (Scheduling)
Systèmes d’exploitation Processus conclusion Modèle conceptuel de processus Pour masquer les effets des interruptions, les SE fournissent un modèle conceptuel.
Transcription de la présentation:

Ordonnancement du CPU Concepts de Base Critères d’Ordonnancement Algorithmes d’Ordonnancement Ordonnancement Multi-Processeur Ordonnancement Temps Réel Ordonnancement de Threads Exemples d’OSs Ordonnancement de Threads Java Evaluation d’Algorithmes

Concepts de Base Utilisation CPU maximale obtenue avec la multiprogrammation Cycle CPU–E/S – Le déroulement d’un processus consiste en une suite de cycles d’exécution CPU et d’attente d’E/S Distribution cycles CPU

Séquence d’Alternance de Cycles CPU et E/S

Histogramme des Temps de Cycles CPU

Ordonnanceur CPU Choisit parmi les processus prêts en mémoire, et alloue la CPU à l’un d’eux Les décisions d’ordonnancement de la CPU sont pris lors: 1. Du changement d’état “exécution” à “en attente” 2. Du changement d’état de “exécution” à “prêt” 3. Du changement d’état de “en attente” à “prêt” 4. De la terminaison d’un processus L’ordonnancement dans les cas 1 et 4 est non préemptif Pour les autres cas, c’est préemptif

Dispatcheur Le dispatcheur donne le contrôle de la CPU au processus choisi par l’ordonnanceur à court terme; ceci comprend: Commutation de contexte Passer en mode utilisateur Sauter au bon endroit dans le programme pour le relancer Latence du Dispatcheur – temps pris par le dispatcheur pour stopper un processus et (re)lancer un autre

Critères d’Ordonnancement Utilisation de la CPU – utiliser la CPU le maximum possible Débit (Throughput) – # de processus qui terminent leur exécution par unité de temps Temps de rotation (Turnaround time) – le temps depuis le lancement du processus jusqu’à sa terminaison (les attentes incluses) Temps d’attente – temps d’un processus dans la file d’attente des processus prêts Temps de réponse – temps mis entre une requête émise et la première réponse, pas la sortie (pour les environnements à temps partagé)

Critères d’Optimisation Utilisation maximale du CPU Débit maximum Temps de rotation minimal Temps d’attente minimal Temps de réponse minimal

Ordonnancement First-Come, First-Served (FCFS) Processus Tps CPU P1 24 P2 3 P3 3 Supposons que les processus arrivent dans l’ordre suivant: P1 , P2 , P3 Le diagramme de Gantt correspondant est: Temps d‘attente de P1 = 0; P2 = 24; P3 = 27 Temps d’attente moyen: (0 + 24 + 27)/3 = 17 P1 P2 P3 24 27 30

Ordonnancement FCFS (Cont.) Supposons que les processus arrivent dans l’ordre suivant P2 , P3 , P1 Le diagramme de Gantt serait alors: Temps d’attente de P1 = 6; P2 = 0; P3 = 3 Temps d’attente moyen: (6 + 0 + 3)/3 = 3 Meilleur résultat que le cas précédent Effet convoi un processus court derrière un processus long P1 P3 P2 6 3 30

Ordonnancement Shortest-Job-First (SJF) Associer à chaque processus son prochain temps d’utilisation du CPU. Utiliser ces temps pour choisir le processus avec le temps le plus petit Deux schémas: Non préemptif – dès que le CPU est donné à un processus, ce dernier ne peut être interrompu avant la fin de son temps CPU préemptif – si un nouveau processus débarque avec un temps CPU plus petit que le reste du temps CPU du processus courant, on commute vers le nouveau processus. Ce schéma est connu sous le nom de Shortest-Remaining-Time-First (SRTF) SJF est optimal – donne un temps moyen minimal pour un ensemble de processus donnés

Exemple de SJF Non-Préemptif Processus Tps d’Arrivée Tps CPU P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (non préemptif) Temps moyen d’attente = (0 + 6 + 3 + 7)/4 - 4 P1 P3 P2 7 3 16 P4 8 12

Exemple de SJF Préemptif Processus Tps d’Arrivée Tps CPU P1 0.0 7 P2 2.0 4 P3 4.0 1 P4 5.0 4 SJF (préemptif) Temps d’Attente Moyen = (9 + 1 + 0 +2)/4 - 3 P1 P3 P2 4 2 11 P4 5 7 16

Déterminer la Longueur du Prochain Temps CPU On peut juste estimer le temps Peut être fait à partir des temps d’exécution précédents, utilisant une moyenne exponentielle

Prédiction de la Longueur du Prochain Temps CPU

Exemples d’une Moyenne Exponentielle  =0 n+1 = n Passé récent ne compte pas  =1 n+1 = tn Seulement le dernier temps CPU compte L’expansion de la formule donne: n+1 =  tn+(1 - )  tn -1 + … +(1 -  )j  tn -1 + … +(1 -  )n=1 tn 0 Comme  et (1 - ) sont plus petits ou égaux que 1, chaque terme successif a un poids plus petit que son prédécesseur

Ordonnancement avec Priorité Une priorité (nombre entier) est associée à chaque processus Le CPU est alloué au processus à la priorité la plus grande (le plus petit entier  la plus grande priorité) Préemptif Non préemptif SJF est un ordonnancement à priorité où la priorité correspond au temps CPU suivant Problème  Famine – processus à faible priorité peuvent ne jamais s’exécuter Solution  Vieillissement – avec le temps, incrémenter la priorité des processus en attente

Tourniquet/Round Robin (RR) Chaque processus se voit alloué le CPU pour un temps limité (quantum), en général 10-100 milliseconds. A la fin de ce temps, le processus est arrêté et ajouté à la fin de la file d’attente des processus prêts. Si n processus sont dans la file d’attente des processus prêts et le quantum est q, alors chaque processus reçoit 1/n du temps CPU en parties de q unités. Aucun processus attend plus de (n-1)q. Performance q large  FIFO q petit  q doit être large comparé au temps de commutation de tâche, sinon l’overhead est trop grand

Exemple de RR avec Q = 20 Processus Temps CPU P1 53 P2 17 P3 68 P4 24 Le diagramme de Gantt est: Typiquement, une moyenne de temps de rotation plus grande que SJF, mais un meilleur temps de réponse P1 P2 P3 P4 20 37 57 77 97 117 121 134 154 162

Quantum et Temps de Commutation de Contexte

Temps de Rotation Varie avec le Quantum

File Multiniveaux La file d’attente est partagée en files séparées: premier plan/foreground (interactif) arrière plan/background (batch) Chaque file a sa propre politique d’ordonnancement foreground – RR background – FCFS Un ordonnancement inter-files doit exister Ordonnancement à priorité fixe; (i.e., servir tous les processus de la file foreground puis ceux de la file background). Possibilité de famine. Time slice – chaque file obtient une partie du temps CPU qu’elle utilise pour ordonnancer ces processus en attente; i.e., 80% pour la file foreground en RR et 20% pour la file background en FCFS

Ordonnancement à Files Multiniveau

Ordonnancement avec Files Multiniveau à Retour Un processus peut changer de file; le vieillissement peut être implémenté de la sorte Un ordonnanceur de files multiniveaux à retour est défini suivant les paramètres suivants: Nombre de files Politique d’ordonnancement pour chaque file Méthode déterminant la promotion d’un processus vers une file d’attente plus prioritaire Méthode déterminant le passage d’un processus dans une file moins prioritaire Méthode déterminant dans quelle file placer un nouveau service

Exemple de File Multiniveaux à Retour Trois files: Q0 – quantum de 8 millisecondes Q1 – quantum de 16 millisecondes Q2 – FCFS Ordonnancement Un nouveau processus est placé dans Q0 au début; à sa première exécution, il reçoit 8 millisecondes. S’il ne termine pas son exécution, il est replacé dans Q1. Si un processus de la file Q1 est servi (16 msec) et ne se termine pas, il est replacé dans Q2.

Files avec Multiniveaux à Retour

Ordonnancement Multiprocesseur L’ordonnancement CPU est plus complexe Processeurs homogènes dans un multiprocesseur Partage de charge Multitraîtement asymétrique – seulement un processeur accède aux structures de données systèmes, supprimant le besoin de partage de données

Ordonnancement Temps Réel Systèmes temps réel durs – exige la garantie qu’un processus soit terminée au bout d’un temps bien défini Systèmes temps réel souples – exige que les processus plus prioritaires soient traîtés avant ceux de moins haute priorité

Latence du Dispatcheur

Evaluation des Algorithmes Modèles déterministes – prennent un échantillon et définissent les performances pour cet échantillon Modèles de files d’attente Implémentation

Evaluation des Ordonnanceurs de CPU par Simulation

Ordonnancement Solaris 2

Priorités Windows XP

Ordonnancement Linux Deux algorithmes: temps partagé et temps réel Priorité basée sur des crédits – le processus avec le plus de crédits est choisi Crédit soustrait à l’occurrence de l’interruption horloge Quand crédit = 0, un autre processus est choisi Quand tous les processus ont un crédit = 0, on les créédite Basé sur des facteurs de priorité et de leur histoire Temps Réel Temps réel souple Posix.1b – deux classes FCFS and RR Le processus à la priorité la plus haute s’exécute en premier

Ordonnancement de Thread Ordonnancement Local – Comment les bibliothèques de threads décident quel thread associé à un LWP disponible Ordonnancement Global – Comment le noyau décide quel thread exécuter

API d’Ordonnancement de Pthread #include <pthread.h> #include <stdio.h> #define NUM THREADS 5 int main(int argc, char *argv[]) { int i; pthread t tid[NUM THREADS]; pthread attr t attr; /* get the default attributes */ pthread attr init(&attr); /* set the scheduling algorithm to PROCESS or SYSTEM */ pthread attr setscope(&attr, PTHREAD SCOPE SYSTEM); /* set the scheduling policy - FIFO, RT, or OTHER */ pthread attr setschedpolicy(&attr, SCHED OTHER); /* create the threads */ for (i = 0; i < NUM THREADS; i++) pthread create(&tid[i],&attr,runner,NULL);

Pthread Scheduling API /* now join on each thread */ for (i = 0; i < NUM THREADS; i++) pthread join(tid[i], NULL); } /* Each thread will begin control in this function */ void *runner(void *param) { printf("I am a thread\n"); pthread exit(0);

Ordonnancement des Java Threads JVM utilise un algorithme d’ordonnancement préemptif, à base de priorités La file FIFO est utilisée en cas de plusieurs threads à priorités égales

Ordonnanacement Java Thread (cont) JVM ordonnance un thread à exécuter quand: Le thread actuel en exécution sort de l’état Exécutable Un thread à priorité supérieure entre dans l’état Exécutable * Note – la JVM ne spécifie pas si les threads recoivent des tranches de temps ou pas

Tranches de Temps Comme la JVM ne garantit pas des tranches de temps, la méthode yield() peut-être utilisée: while (true) { // exécuter des instructions CPU . . . Thread.yield(); } Le thread actuel donne la main à un autre thread à priorité égale

Priorités Threads Priorité Commentaire Thread.MIN_PRIORITY Priorité de Thread Minimale Thread.MAX_PRIORITY Priorité de Thread Maximale Thread.NORM_PRIORITY Priorité de Thread par défaut Les priorités peuvent être modifiées avec la méthode setPriority(): setPriority(Thread.NORM_PRIORITY + 2);