Qu'est-ce que Gestionnaire d'interruption ?

Routine exécutée par le CPU lorsqu'une interruption ou une exception survient. Elle sauvegarde l'état du traitement interrompu, effectue le traitement selon la cause, puis reprend le traitement initial. En principe, elle doit être aussi courte que possible.

Nom japonais: 割り込みハンドラ

« Gestionnaire d'interruption » apparaît dans 5 questions d'entraînement réparties sur 2 thèmes, dont Systèmes embarqués et firmware, CPU et architecture.

Domaine: Système d'exploitation et matériel

S'entraîner : questions sur Gestionnaire d'interruption

Pendant que le traitement principal manipule un bit de registre par « reg |= mask; » (lecture-modification-écriture), si un gestionnaire d'interruption modifie un autre bit du même registre, quelle combinaison de problème possible et de remède est correcte ?

  1. ALa modification faite par l'interruption est effacée par la réécriture du traitement principal. On interdit les interruptions pendant l'opération ou l'on utilise des registres dédiés de mise à 1 et de mise à 0 par bit
  2. BLe registre est détruit et devient inutilisable. On remplace le microcontrôleur
  3. CRien ne se produit. Aucun remède n'est nécessaire
Afficher la réponse et l'explication

Réponse : A. La modification faite par l'interruption est effacée par la réécriture du traitement principal. On interdit les interruptions pendant l'opération ou l'on utilise des registres dédiés de mise à 1 et de mise à 0 par bit

« reg |= mask » comporte trois opérations : lire le registre, appliquer le OR, réécrire. Si une interruption survient juste après la lecture et que le gestionnaire modifie un autre bit, le traitement principal réécrit à partir de l'ancienne valeur lue avant l'interruption, et la modification du gestionnaire est perdue. En interdisant les interruptions pendant l'opération, ou en utilisant des registres de mise à 1 et de mise à 0 où seuls les bits écrits à 1 changent, une seule écriture suffit et le problème disparaît.

Que convient-il le plus d'éviter dans un gestionnaire d'interruption ?

  1. AÉcrire 1 dans une variable drapeau pour avertir le traitement principal
  2. BEffacer le bit indiquant la cause de l'interruption
  3. CDes traitements longs, comme l'affichage d'une longue chaîne par printf ou une boucle d'attente jusqu'à un événement
Afficher la réponse et l'explication

Réponse : C. Des traitements longs, comme l'affichage d'une longue chaîne par printf ou une boucle d'attente jusqu'à un événement

Pendant qu'un gestionnaire d'interruption s'exécute longuement, les autres interruptions ne sont pas servies et le traitement principal est également arrêté. printf met du temps à terminer l'affichage et peut lui-même utiliser des interruptions ; il est donc particulièrement dangereux. Le gestionnaire se limite au strict minimum, comme recevoir une donnée dans un tampon ou lever un drapeau, et confie les traitements lourds au traitement principal ou à une tâche. Il ne faut pas non plus oublier d'effacer le bit de cause.

« Gestionnaire d'interruption » dans les explications

Questions mentionnant « Gestionnaire d'interruption » (5)

  1. Pendant que le traitement principal manipule un bit de registre par « reg |= mask; » (lecture-modification-écriture), si un gestionnaire d'interruption modifie un autre bit du même registre, quelle combinaison de problème possible et de remède est correcte ?
  2. Que convient-il le plus d'éviter dans un gestionnaire d'interruption ?
  3. Pourquoi est-il déconseillé de réarmer (« kicker ») inconditionnellement le chien de garde dans le gestionnaire d'interruption de temporisateur appelé toutes les 1 ms ?
  4. Quel mécanisme du processeur suspend temporairement le traitement en cours pour traiter en priorité une demande, par exemple d'un périphérique externe ?
  5. Lorsque le programme ci-dessus est compilé avec optimisation, led_on() peut ne pas être appelée même si l'interruption de temporisateur survient. Quelle combinaison de cause et de remède est correcte ?

Comparatifs incluant ce terme

Termes associés

Interruption Lecture-modification-écriture Chien de garde (watchdog timer) Microcontrôleur Scrutation (polling) Appel système ASID (identifiant d'espace d'adressage) Changement de contexte Copie sur écriture (copy-on-write) Défaut de page (page fault)

Retour au glossaire