9. Interruptions et appels système
Une interruption suspend temporairement le flot courant, sauvegarde le contexte nécessaire, sélectionne un gestionnaire, traite l'événement, puis permet une reprise. Elle évite de demander au processeur de sonder continuellement chaque périphérique et fournit aussi un mécanisme permettant au noyau de reprendre la main pour la préemption.
Sur x86, l'Interrupt Descriptor Table associe jusqu'à 256 vecteurs à des descripteurs de portes. Le registre IDTR localise la table; les vecteurs 0 à 31 sont réservés aux exceptions du processeur. Les attributs de porte et niveaux de privilège déterminent quelles transitions sont autorisées.
Il faut distinguer :
- une interruption matérielle, déclenchée par un périphérique ou une minuterie;
- une exception, provoquée par l'exécution courante, par exemple une faute de page;
- un appel système, transition volontaire et contrôlée demandée par le programme.
Les détails bas niveau dépendent de l'architecture. L'aide-mémoire Linux fourni décrit l'ABI i386 et l'instruction historique int 0x80; ses numéros et registres ne doivent pas être transposés automatiquement à x86-64. De même, le navigateur Bootlin pointe vers Linux 2.6.32 : il est utile pour suivre des définitions dans une version donnée, pas pour présumer l'organisation exacte d'un noyau actuel.