8. Interruptions et sauvegarde du contexte
8.1 Pourquoi interrompre le flot courant?
Le CPU suit normalement le cycle chercher–décoder–exécuter. Sans événement externe, il continuerait le programme courant. Une interruption suspend ce flot et transfère l'exécution vers une routine connue du noyau.
Sources possibles :
- périphérique matériel;
- minuterie;
- exception processeur;
- mécanisme logiciel employé pour demander un service protégé.
Le numéro d'interruption sélectionne une entrée d'une table. Dans le modèle x86 étudié, l'IDT contient jusqu'à 256 descripteurs donnant l'adresse du gestionnaire, son type, sa présence et ses règles de protection.
8.2 Exemple du registre corrompu
Pour calculer A = A + 4, le programme peut charger A dans EAX, additionner 4, puis réécrire EAX en mémoire. Si A vaut 3, le résultat intermédiaire 7 existe momentanément seulement dans EAX.
Les schémas suivent aussi EIP, le compteur ordinal, et ESP, le pointeur de pile. Ces registres permettent respectivement de retrouver la prochaine instruction utilisateur et le cadre de pile approprié après l'interruption.
Une interruption survient avant l'écriture. La routine noyau utilise EAX et y place 666. Si le système restaure l'adresse de retour et la pile, mais pas la valeur originale du registre, le programme reprend et écrit 666 dans A.
La leçon est générale : le contexte doit inclure tout état que le gestionnaire risque de modifier. Sauvegarder seulement le compteur ordinal ne suffit pas.
8.3 Séquence d'une interruption
- un événement produit un numéro d'interruption;
- le processeur sauvegarde un état minimal;
- il consulte la table protégée;
- il valide les privilèges et localise le gestionnaire;
- il passe au contexte noyau;
- le noyau sauvegarde les registres nécessaires et traite l'événement;
- l'ordonnanceur peut choisir le même processus ou un autre;
- le contexte choisi est restauré;
- un retour d'interruption reprend l'exécution utilisateur.
Une interruption n'implique pas automatiquement un changement de processus. Le noyau peut traiter l'événement et restaurer le même processus. Il y a néanmoins entrée noyau, sauvegarde, traitement et restauration.
8.4 Privilèges
Le matériel empêche un programme utilisateur de sauter librement vers du code noyau. Les descripteurs de portes et niveaux de privilège déterminent si une transition est permise et à quel niveau la routine s'exécute.
Les diapositives et l'audio emploient des sigles x86 comme DPL et RPL dans un modèle simplifié. Les formulations exactes du transcript sont parfois déformées. Le principe fiable à retenir est : métadonnées protégées, validation matérielle, changement de pile ou de contexte si nécessaire, exécution privilégiée puis retour contrôlé.