0% ont trouvé ce document utile (0 vote)
24 vues41 pages

CH 6

Transféré par

chandoul8abdelghaffar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
24 vues41 pages

CH 6

Transféré par

chandoul8abdelghaffar
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PPT, PDF, TXT ou lisez en ligne sur Scribd

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

Systèmes d’exploitation 6.1 URD L2 2005


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

Systèmes d’exploitation 6.2 URD L2 2005


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

Systèmes d’exploitation 6.3 URD L2 2005


Histogramme des Temps de Cycles CPU

Systèmes d’exploitation 6.4 URD L2 2005


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

Systèmes d’exploitation 6.5 URD L2 2005


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

Systèmes d’exploitation 6.6 URD L2 2005


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é)

Systèmes d’exploitation 6.7 URD L2 2005


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

Systèmes d’exploitation 6.8 URD L2 2005


Ordonnancement First-Come, First-Served
(FCFS)

Processus Tps CPU


P1 24
P2 3
P3 3
 Supposons que les processus arrivent dans l’ordre suivant: P ,
1
P2 , P3 Le diagramme de Gantt correspondant est:
P1 P2 P3

0 24 27 30
 Temps d‘attente de P = 0; P = 24; P = 27
1 2 3
 Temps d’attente moyen: (0 + 24 + 27)/3 = 17

Systèmes d’exploitation 6.9 URD L2 2005


Ordonnancement FCFS (Cont.)
Supposons que les processus arrivent dans l’ordre suivant
P2 , P3 , P1
 Le diagramme de Gantt serait alors:

P2 P3 P1

0 3 6 30

 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

Systèmes d’exploitation 6.10 URD L2 2005


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

Systèmes d’exploitation 6.11 URD L2 2005


Exemple de SJF Non-Préemptif
ProcessusTps d’ArrivéeTps CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (non préemptif)
P1 P3 P2 P4

0 3 7 8 12 16

 Temps moyen d’attente = (0 + 6 + 3 + 7)/4 = 4

Systèmes d’exploitation 6.12 URD L2 2005


Exemple de SJF Préemptif
ProcessusTps d’ArrivéeTps CPU
P1 0.0 7
P2 2.0 4
P3 4.0 1
P4 5.0 4
 SJF (préemptif)
P1 P2 P3 P2 P4 P1

0 2 4 5 7 11 16

 Temps d’Attente Moyen = (9 + 1 + 0 +2)/4 = 3

Systèmes d’exploitation 6.13 URD L2 2005


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

1. t n actual lenght of n th CPU burst


2.  n 1 predicted value for the next CPU burst
3.  , 0  1
4. Define :  n 1  t n  1    n .

Systèmes d’exploitation 6.14 URD L2 2005


Prédiction de la Longueur du Prochain Temps
CPU

Systèmes d’exploitation 6.15 URD L2 2005


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

Systèmes d’exploitation 6.16 URD L2 2005


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

Systèmes d’exploitation 6.17 URD L2 2005


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

Systèmes d’exploitation 6.18 URD L2 2005


Exemple de RR avec Q = 20
ProcessusTemps CPU
P1 53
P2 17
P3 68
P4 24
 Le diagramme de Gantt est:

P1 P2 P3 P4 P1 P3 P4 P1 P3 P3

0 20 37 57 77 97 117 121 134 154 162

 Typiquement, une moyenne de temps de rotation plus grande


que SJF, mais un meilleur temps de réponse

Systèmes d’exploitation 6.19 URD L2 2005


Quantum et Temps de Commutation de
Contexte

Systèmes d’exploitation 6.20 URD L2 2005


Temps de Rotation Varie avec le Quantum

Systèmes d’exploitation 6.21 URD L2 2005


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

Systèmes d’exploitation 6.22 URD L2 2005


Ordonnancement à Files Multiniveau

Systèmes d’exploitation 6.23 URD L2 2005


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

Systèmes d’exploitation 6.24 URD L2 2005


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.

Systèmes d’exploitation 6.25 URD L2 2005


Files avec Multiniveaux à Retour

Systèmes d’exploitation 6.26 URD L2 2005


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

Systèmes d’exploitation 6.27 URD L2 2005


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é

Systèmes d’exploitation 6.28 URD L2 2005


Latence du Dispatcheur

Systèmes d’exploitation 6.29 URD L2 2005


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

Systèmes d’exploitation 6.30 URD L2 2005


Evaluation des Ordonnanceurs de CPU par
Simulation

Systèmes d’exploitation 6.31 URD L2 2005


Ordonnancement Solaris 2

Systèmes d’exploitation 6.32 URD L2 2005


Priorités Windows XP

Systèmes d’exploitation 6.33 URD L2 2005


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 à 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

Systèmes d’exploitation 6.34 URD L2 2005


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

Systèmes d’exploitation 6.35 URD L2 2005


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);

Systèmes d’exploitation 6.36 URD L2 2005


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);
}

Systèmes d’exploitation 6.37 URD L2 2005


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

Systèmes d’exploitation 6.38 URD L2 2005


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

Systèmes d’exploitation 6.39 URD L2 2005


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
...
[Link]();
}

Le thread actuel donne la main à un autre thread à priorité égale

Systèmes d’exploitation 6.40 URD L2 2005


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);

Systèmes d’exploitation 6.41 URD L2 2005

Vous aimerez peut-être aussi