Comment le système partage le processeur
L’ordonnancement est le choix, fait par le système d’exploitation, du programme qui utilise le processeur à chaque instant. Il explique pourquoi un téléphone à quatre cœurs semble faire dix choses à la fois.
Musique, messages et carte tournent ensemble. En réalité, le système les fait passer chacun son tour, très vite.
À la fin de cette leçon
Remarque
Je peux expliquer comment le système d’exploitation partage le processeur entre plusieurs processus.
Mots-clés
| Mot | Ce que ça veut dire | Exemple |
|---|---|---|
| Processus | un programme en cours d’exécution | |
| État | ce que fait un processus à un instant donné | prêt |
| Ordonnanceur | la partie du système qui choisit le processus suivant | |
| File des prêts | les processus qui attendent un cœur libre | |
| Quantum | la durée qu’un processus garde le cœur avant de le rendre | |
| Commutation de contexte | le changement de processus sur un cœur |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Un processus est un programme qui tourne
Un processus est un programme en cours d’exécution. Le fichier du programme dort sur le disque. Quand vous le lancez, le système crée un processus : il lui donne un numéro, de la mémoire et une place dans ses files d’attente.
Deux processus peuvent venir du même programme. Deux fenêtres de navigateur en sont un exemple.
Lire l’état de ce processus
grep State /proc/self/statusAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Pourquoi grep se voit en cours d’exécution
Le système écrit l’état de chaque processus dans un fichier sous /proc. self désigne le processus qui lit.
La commande affiche une ligne qui commence par State:, puis la lettre R et le mot running. C’est logique : au moment où grep lit son propre état, il tourne.
Les cinq états d’un processus
| État | Sens | Exemple |
|---|---|---|
| Nouveau | Le système le prépare | Vous venez de lancer une application |
| Prêt | Il peut tourner et attend un cœur libre | Il vient de finir son quantum |
| En cours | Un cœur exécute ses instructions | Il calcule un total |
| Bloqué | Il attend un événement | Il attend la lecture d’un fichier |
| Terminé | Il a fini, le système libère ses ressources | Vous fermez l’application |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
L’ordonnanceur donne le cœur chacun son tour
Le système garde les processus prêts dans une file des prêts. L’ordonnanceur en prend un et le laisse tourner pendant un quantum, souvent quelques millisecondes.
Quand le quantum finit, le processus retourne au bout de la file. Le suivant passe. Cette méthode s’appelle le tourniquet.
Exemple travaillé : un tourniquet de quantum 2
| De … à | Processus | Reste après | File ensuite |
|---|---|---|---|
| 0 à 2 | A (5 au départ) | 3 | B, C, A |
| 2 à 4 | B (2 au départ) | 0, terminé | C, A |
| 4 à 6 | C (4 au départ) | 2 | A, C |
| 6 à 8 | A | 1 | C, A |
| 8 à 10 | C | 0, terminé | A |
| 10 à 11 | A | 0, terminé | vide |
Les cellules que les étudiants remplissent restent vides dans cet aperçu.
Changer de processus a un coût
Pour passer d’un processus à l’autre, le système fait une commutation de contexte. Il sauvegarde les registres du premier, puis charge ceux du second.
Pendant ce temps, aucun programme utile ne tourne. Un quantum trop court fait donc perdre du temps. Un quantum trop long rend la machine lente à réagir.
Compter les lignes de commutations
grep -c ctxt_switches /proc/self/statusAffichée ici, non exécutée. Créez un compte gratuit pour appuyer sur Exécuter et la saisir dans le terminal de votre propre labo.
Deux compteurs de commutations
La commande affiche 2, car le fichier contient deux lignes : voluntary_ctxt_switches et nonvoluntary_ctxt_switches.
La première compte les fois où le processus a rendu le cœur de lui-même, en se bloquant. La seconde compte les fois où son quantum a pris fin. Les valeurs dépendent de la machine : regardez seulement qu’elles existent.
Erreur fréquente
Attention
Beaucoup de gens pensent qu’un cœur exécute plusieurs processus en même temps. Un cœur n’en exécute qu’un à la fois. L’impression de simultanéité vient de tranches très courtes. Seuls plusieurs cœurs travaillent vraiment ensemble.