Plus facile à lire avec un fond crème, une teinte, plus de contraste ou un texte plus grand ? Choisissez vos couleurs et votre texte, une fois pour toutes les pages.

Leçon gratuite

Processus et ordonnancement

Après cette leçon: Je peux expliquer comment le système d’exploitation partage le processeur entre plusieurs processus.

Leçon de 50 min2 commandesLab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

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

MotCe que ça veut direExemple
Processusun programme en cours d’exécution
Étatce que fait un processus à un instant donnéprêt
Ordonnanceurla partie du système qui choisit le processus suivant
File des prêtsles processus qui attendent un cœur libre
Quantumla durée qu’un processus garde le cœur avant de le rendre
Commutation de contextele 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

Commande
grep State /proc/self/status

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

ÉtatSensExemple
NouveauLe système le prépareVous venez de lancer une application
PrêtIl peut tourner et attend un cœur libreIl vient de finir son quantum
En coursUn cœur exécute ses instructionsIl calcule un total
BloquéIl attend un événementIl attend la lecture d’un fichier
TerminéIl a fini, le système libère ses ressourcesVous 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 … àProcessusReste aprèsFile ensuite
0 à 2A (5 au départ)3B, C, A
2 à 4B (2 au départ)0, terminéC, A
4 à 6C (4 au départ)2A, C
6 à 8A1C, A
8 à 10C0, terminéA
10 à 11A0, 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

Commande
grep -c ctxt_switches /proc/self/status

Affiché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.

À propos de ce labo et de sa source: Lab Linux du quotidien : la trentaine de commandes que les ingénieurs tapent de tête

Vous enseignez à une classe ? Proposez ce module à vos étudiants avec un guide de l'enseignant, des devoirs corrigés et un laboratoire pour chaque étudiant.