Lorsqu'un processeur a une interruption en attente, cela signifie qu'un signal de demande d'interruption a été reçu mais n'a pas encore été traité. Voici ce que fait généralement le processeur :
1. Accusé de réception d'interruption (le cas échéant) : Le processeur peut renvoyer un signal d'accusé de réception au dispositif d'interruption, accusant réception de la demande. Cela dépend de l'architecture d'interruption spécifique (par exemple, interruptions vectorielles ou interrogation).
2. Procédure de gestion des interruptions : Le processeur exécute une procédure spécifique pour gérer l'interruption. Cela implique généralement les étapes suivantes :
* Enregistrer le contexte : Le processeur enregistre l'état actuel du programme en cours d'exécution. Cela inclut des éléments tels que les valeurs des registres, le compteur de programme (qui indique la prochaine instruction à exécuter) et potentiellement d'autres indicateurs d'état. Cela garantit que lorsque la gestion des interruptions est terminée, le programme d'origine peut reprendre son exécution de manière transparente là où il s'était arrêté.
* Vectorisation d'interruption (souvent) : Le processeur détermine quelle routine de gestionnaire d'interruption exécuter. Cela se fait souvent à l'aide d'une table de vecteurs d'interruption. Chaque entrée de ce tableau pointe vers l'adresse mémoire du code qui gère un type particulier d'interruption. Le vecteur d'interruption est déterminé en fonction de la source ou du type de l'interruption.
* Exécuter le gestionnaire d'interruption : Le processeur accède à l'adresse spécifiée par le vecteur d'interruption et exécute la routine de service d'interruption (ISR) ou le gestionnaire d'interruption approprié. Ce code effectue l'action nécessaire pour répondre à l'interruption (par exemple, lire les données d'un appareil, mettre à jour une minuterie, gérer une pression sur un clavier).
* Restaurer le contexte : Une fois l'ISR terminé, le processeur restaure le contexte enregistré à l'étape 2. Cela inclut le rechargement des registres, du compteur de programme et des indicateurs d'état.
* Retour après interruption : Une instruction spéciale (par exemple, `IRET` dans x86) est exécutée pour rendre le contrôle au programme interrompu. Le processeur reprend l'exécution de l'instruction suivant immédiatement le point où l'interruption s'est produite.
3. Priorité d'interruption (le cas échéant) : Si plusieurs interruptions sont en attente, le processeur peut les prioriser en fonction des niveaux de priorité qui leur sont attribués. Les interruptions de priorité plus élevée peuvent préempter celles de priorité inférieure. Le mécanisme exact de gestion de plusieurs interruptions varie en fonction de l'architecture du processeur.
4. Masquage des interruptions (facultatif) : Le processeur peut être capable de masquer (désactiver) des interruptions spécifiques. Cela empêche certaines interruptions d'interrompre l'exécution du programme en cours ou d'un autre gestionnaire d'interruption. Ceci est souvent utile pour prévenir les conflits ou garantir que les tâches critiques ne sont pas interrompues.
Essentiellement, une interruption en attente amène le processeur à suspendre temporairement sa tâche en cours, à gérer l'interruption, puis à reprendre la tâche d'origine. Cela permet au système de répondre aux événements externes de manière rapide et efficace.
|