La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

6.1 URDL22005 Systèmes dexploitation Ordonnancement du CPU Concepts de Base Critères dOrdonnancement Algorithmes dOrdonnancement Ordonnancement Multi-Processeur.

Présentations similaires


Présentation au sujet: "6.1 URDL22005 Systèmes dexploitation Ordonnancement du CPU Concepts de Base Critères dOrdonnancement Algorithmes dOrdonnancement Ordonnancement Multi-Processeur."— Transcription de la présentation:

1 6.1 URDL22005 Systèmes dexploitation Ordonnancement du CPU Concepts de Base Critères dOrdonnancement Algorithmes dOrdonnancement Ordonnancement Multi-Processeur Ordonnancement Temps Réel Ordonnancement de Threads Exemples dOSs Ordonnancement de Threads Java Evaluation dAlgorithmes

2 6.2 URDL22005 Systèmes dexploitation Concepts de Base Utilisation CPU maximale obtenue avec la multiprogrammation Cycle CPU–E/S – Le déroulement dun processus consiste en une suite de cycles dexécution CPU et dattente dE/S Distribution cycles CPU

3 6.3 URDL22005 Systèmes dexploitation Séquence dAlternance de Cycles CPU et E/S

4 6.4 URDL22005 Systèmes dexploitation Histogramme des Temps de Cycles CPU

5 6.5 URDL22005 Systèmes dexploitation Ordonnanceur CPU Choisit parmi les processus prêts en mémoire, et alloue la CPU à lun deux Les décisions dordonnancement 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 dun processus Lordonnancement dans les cas 1 et 4 est non préemptif Pour les autres cas, cest préemptif

6 6.6 URDL22005 Systèmes dexploitation Dispatcheur Le dispatcheur donne le contrôle de la CPU au processus choisi par lordonnanceur à 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

7 6.7 URDL22005 Systèmes dexploitation Critères dOrdonnancement 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 dattente – temps dun processus dans la file dattente 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é)

8 6.8 URDL22005 Systèmes dexploitation Critères dOptimisation Utilisation maximale du CPU Débit maximum Temps de rotation minimal Temps dattente minimal Temps de réponse minimal

9 6.9 URDL22005 Systèmes dexploitation Ordonnancement First-Come, First-Served (FCFS) ProcessusTps CPU P 1 24 P 2 3 P 3 3 Supposons que les processus arrivent dans lordre suivant: P 1, P 2, P 3 Le diagramme de Gantt correspondant est: Temps dattente de P 1 = 0; P 2 = 24; P 3 = 27 Temps dattente moyen: ( )/3 = 17 P1P1 P2P2 P3P

10 6.10 URDL22005 Systèmes dexploitation Ordonnancement FCFS (Cont.) Supposons que les processus arrivent dans lordre suivant P 2, P 3, P 1 Le diagramme de Gantt serait alors: Temps dattente de P 1 = 6; P 2 = 0 ; P 3 = 3 Temps dattente moyen: ( )/3 = 3 Meilleur résultat que le cas précédent Effet convoi un processus court derrière un processus long P1P1 P3P3 P2P

11 6.11 URDL22005 Systèmes dexploitation Ordonnancement Shortest-Job-First (SJF) Associer à chaque processus son prochain temps dutilisation 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

12 6.12 URDL22005 Systèmes dexploitation ProcessusTps dArrivéeTps CPU P P P P SJF (non préemptif) Temps moyen dattente = ( )/4 - 4 Exemple de SJF Non-Préemptif P1P1 P3P3 P2P P4P4 812

13 6.13 URDL22005 Systèmes dexploitation Exemple de SJF Préemptif ProcessusTps dArrivéeTps CPU P P P P SJF (préemptif) Temps dAttente Moyen = ( )/4 - 3 P1P1 P3P3 P2P P4P4 57 P2P2 P1P1 16

14 6.14 URDL22005 Systèmes dexploitation Déterminer la Longueur du Prochain Temps CPU On peut juste estimer le temps Peut être fait à partir des temps dexécution précédents, utilisant une moyenne exponentielle

15 6.15 URDL22005 Systèmes dexploitation Prédiction de la Longueur du Prochain Temps CPU

16 6.16 URDL22005 Systèmes dexploitation Exemples dune Moyenne Exponentielle =0 n+1 = n Passé récent ne compte pas =1 n+1 = t n Seulement le dernier temps CPU compte Lexpansion de la formule donne: n+1 = t n +(1 - ) t n -1 + … +(1 - ) j t n -1 + … +(1 - ) n=1 t n 0 Comme et (1 - ) sont plus petits ou égaux que 1, chaque terme successif a un poids plus petit que son prédécesseur

17 6.17 URDL22005 Systèmes dexploitation 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 sexécuter Solution Vieillissement – avec le temps, incrémenter la priorité des processus en attente

18 6.18 URDL22005 Systèmes dexploitation Tourniquet/Round Robin (RR) Chaque processus se voit alloué le CPU pour un temps limité (quantum), en général milliseconds. A la fin de ce temps, le processus est arrêté et ajouté à la fin de la file dattente des processus prêts. Si n processus sont dans la file dattente 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 loverhead est trop grand

19 6.19 URDL22005 Systèmes dexploitation Exemple de RR avec Q = 20 ProcessusTemps CPU P 1 53 P 2 17 P 3 68 P 4 24 Le diagramme de Gantt est: Typiquement, une moyenne de temps de rotation plus grande que SJF, mais un meilleur temps de réponse P1P1 P2P2 P3P3 P4P4 P1P1 P3P3 P4P4 P1P1 P3P3 P3P

20 6.20 URDL22005 Systèmes dexploitation Quantum et Temps de Commutation de Contexte

21 6.21 URDL22005 Systèmes dexploitation Temps de Rotation Varie avec le Quantum

22 6.22 URDL22005 Systèmes dexploitation File Multiniveaux La file dattente est partagée en files séparées: premier plan/foreground (interactif) arrière plan/background (batch) Chaque file a sa propre politique dordonnancement 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 quelle utilise pour ordonnancer ces processus en attente; i.e., 80% pour la file foreground en RR et 20% pour la file background en FCFS

23 6.23 URDL22005 Systèmes dexploitation Ordonnancement à Files Multiniveau

24 6.24 URDL22005 Systèmes dexploitation 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 dordonnancement pour chaque file Méthode déterminant la promotion dun processus vers une file dattente plus prioritaire Méthode déterminant le passage dun processus dans une file moins prioritaire Méthode déterminant dans quelle file placer un nouveau service

25 6.25 URDL22005 Systèmes dexploitation Exemple de File Multiniveaux à Retour Trois files: Q 0 – quantum de 8 millisecondes Q 1 – quantum de 16 millisecondes Q 2 – FCFS Ordonnancement Un nouveau processus est placé dans Q 0 au début; à sa première exécution, il reçoit 8 millisecondes. Sil ne termine pas son exécution, il est replacé dans Q 1. Si un processus de la file Q 1 est servi (16 msec) et ne se termine pas, il est replacé dans Q 2.

26 6.26 URDL22005 Systèmes dexploitation Files avec Multiniveaux à Retour

27 6.27 URDL22005 Systèmes dexploitation Ordonnancement Multiprocesseur Lordonnancement 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

28 6.28 URDL22005 Systèmes dexploitation Ordonnancement Temps Réel Systèmes temps réel durs – exige la garantie quun processus soit terminée au bout dun 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é

29 6.29 URDL22005 Systèmes dexploitation Latence du Dispatcheur

30 6.30 URDL22005 Systèmes dexploitation Evaluation des Algorithmes Modèles déterministes – prennent un échantillon et définissent les performances pour cet échantillon Modèles de files dattente Implémentation

31 6.31 URDL22005 Systèmes dexploitation Evaluation des Ordonnanceurs de CPU par Simulation

32 6.32 URDL22005 Systèmes dexploitation Ordonnancement Solaris 2

33 6.33 URDL22005 Systèmes dexploitation Priorités Windows XP

34 6.34 URDL22005 Systèmes dexploitation Ordonnancement Linux Deux algorithmes: temps partagé et temps réel Temps partagé Priorité basée sur des crédits – le processus avec le plus de crédits est choisi Crédit soustrait à loccurrence de linterruption 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 sexécute en premier

35 6.35 URDL22005 Systèmes dexploitation 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

36 6.36 URDL22005 Systèmes dexploitation API dOrdonnancement de Pthread #include #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);

37 6.37 URDL22005 Systèmes dexploitation 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); }

38 6.38 URDL22005 Systèmes dexploitation Ordonnancement des Java Threads JVM utilise un algorithme dordonnancement préemptif, à base de priorités La file FIFO est utilisée en cas de plusieurs threads à priorités égales

39 6.39 URDL22005 Systèmes dexploitation Ordonnanacement Java Thread (cont) JVM ordonnance un thread à exécuter quand: 1. Le thread actuel en exécution sort de létat Exécutable 2. 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

40 6.40 URDL22005 Systèmes dexploitation 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

41 6.41 URDL22005 Systèmes dexploitation Priorités Threads PrioritéCommentaire Thread.MIN_PRIORITYPriorité de Thread Minimale Thread.MAX_PRIORITYPriorité de Thread Maximale Thread.NORM_PRIORITYPriorité de Thread par défaut Les priorités peuvent être modifiées avec la méthode setPriority(): setPriority(Thread.NORM_PRIORITY + 2);


Télécharger ppt "6.1 URDL22005 Systèmes dexploitation Ordonnancement du CPU Concepts de Base Critères dOrdonnancement Algorithmes dOrdonnancement Ordonnancement Multi-Processeur."

Présentations similaires


Annonces Google