Vous êtes sur la page 1sur 31

Architecture des ordinateurs :

Les interruptions

Majdoulayne HANIFI

2021- 2022
Les interruptions
Introduction

 Comme leur nom l’indique, les interruptions (interrupt en anglais) viennent


interrompre le déroulement normal du microprocesseur.

 Elles sont générées par appel d’un périphérique.

 Elles donnent lieu à l’exécution d’un programme, appelé routine de service ou routine de
traitement de l’interruption (en anglais interrupt service routine, abrégé en ISR, ou interrupt
handler).

 Une interruption est un mécanisme qui permet d’interrompre l’exécution d’un processus suite à
un événement extérieur ou intérieur et de passer le contrôle à une routine dite « routine
d’interruption » ou « traitement d’interruption ».
Les interruptions
Introduction

 Le système d’interruption est un dispositif incorporé au niveau du


séquenceur, qui enregistre et traite les signaux d’interruption envoyé au
processeur :

 Arrêter le processus en cours;

 Sauvegarder le contexte du processus interrompu;

 Exécuter le programme de routine d’interruption;

 Restaurer le contexte du processus interrompu;

 Reprendre l’exécution du processus interrompu


Déroulement d’une routine d’interruption

 Lorsque l’interruption se produit, le processeur, à la fin de l’exécution


de l’instruction en cours, transfère le contrôle à la routine
d’interruption associé à l’événement.

 La routine d’interruption fait d’abord une sauvegarde du contexte du


processus interrompu avant de réaliser son traitement.

 A la fin de celui-ci, le contexte du processus interrompu est restauré, ce


qui lui permet de continuer son exécution convenablement à l’endroit
ou il a été interrompu.
Déroulement d’une routine d’interruption

 Les adresses des routines d’interruptions sont sauvegardées dans une table dite table des
vecteurs d’interruptions ou table des its.

 La table des vecteurs d’its :

 La table des vecteurs d’interruption contient l’adresse des programmes à exécuter


(routines d’it) lorsqu’une interruption survient.

 Pour chaque interruption, la table contient 4 octets d’informations: CS et IP.

 La taille de la table des vecteurs d’interruption est donc 256 ints*4bytes = 1Ko.
Déroulement d’une routine d’interruption

 La table des vecteurs d’its :

 La table des vecteurs d’interruption commence


à l’adresse 00000h(0:0h)et elle finit à l’adresse
003FFh

 Le vecteur i est associé a l’int i

 Exemple : le vecteur 21h est associé a l’it 21h


Déroulement d’une routine d’interruption

 La table des vecteurs d’its :

 VECTEUR O: est associé à la division par 0 (it logicielle)

 VECTEUR 8: est associé à l’it provenant du TIMER

 VECTEUR 9: est associé à l’it provenant du clavier (it matérielle)

 VECTEUR 21H: est associé à l’it 21h du DOS


Déroulement d’une routine d’interruption

 La table des vecteurs d’its :

 Lorsqu’une interruption survient, le numéro de


l’interruption permet de trouver l’adresse du vecteur d’it
qui lui est associé.

 Le numéro de l’interruption est multiplié par 4 afin de


trouver l’adresse du CS et du IP à rechercher (IP est à
l’adresse inférieure, suivi de CS).

 Puis un JMP à CS:IP est fait.

 CS:IP est un «pointeur» vers le code à exécuter afin de


répondre à l’interruption
Déroulement d’une routine d’interruption

 La table des vecteurs d’its :

 Exemple1: les adresses des vecteurs correspondants aux


its 00H, 04h, 21h sont respectivement: 00000h , 00010h,
00054h.

 Exemple2: Si le contenu de la mémoire, à partir de l’adresse


00000h est 00h, 01h, 02h, 03h, 04h, 05h, 06h, 07h, 08h,
etc... Et que l’interruption 1 survient, alors la routine à
l’adresse 0706:0504 sera exécutée.

 Reset est la seule interruption sans numéro.

 Pour reset, CS:IP = FFFF:0000H


Déroulement d’une routine d’interruption
Déroulement d’une routine d’interruption
Déroulement d’une routine d’interruption

 Séquence d’évènements après une interruption :

 Lors d’une interruption, les évènements suivants se produisent:

 Trois registres sont mis sur la pile(empilés)dans l’ordre qui suit: le Flag, CS actuel, puis
IP actuel.

 Le flag IF est mis à 0 après le PUSH du flag.

 Le processeur va ignorer les interruptions matérielles qui arrivent sur la ligne INTR tant
que le flag IF est égal a zéro.
Déroulement d’une routine d’interruption

 Séquence d’évènements après une interruption :

 il y a donc masquage des its matérielles qui arrivent sur la ligne INTR;

 elles pourront être démasquées à tout moment dans la routine d’it.

 Un JMP est exécuté à l’adresse CS:IP trouvée dans la table des vecteurs d’interruption à
partir du numéro de l’interruption.

 La routine de service de l’interruption (ISR ou Interrupt Service Routine) est exécutée.


Déroulement d’une routine d’interruption

 Séquence d’évènements après une interruption :

 elle doit sauvegarder tous les registres qu’elle modifie; et elle doit également les restaurer
avant exécution de la dernière instruction;

 Théoriquement, la dernière instruction de l’ISR est IRET (Interrupt return).

 Un IRET est équivalent à trois POP dans cet ordre: IP, CS et flag..
Déroulement d’une routine d’interruption

 On distingue trois types d’interruptions d’après la façon dont elles sont


appelées :

 les interruptions appelées par le microprocesseur lui-même,

 Les interruptions appelées par le logiciel

 Et celles appelées par les périphériques ( interruptions matérielles)

 On parle quelquefois d’exceptions pour les deux premiers types.


Types d’interruptions (Exemple)

 Interruptions appelées par le microprocesseur :

 Les concepteurs du 8086 ont réservé les interruptions de numéro 00h à 12h pour être appelées par
le microprocesseur.

 On parle quelquefois d’interruptions internes.

 Ces interruptions sont appelées par le microprocesseur en général en réponse à une erreur, par
exemple l’interruption 00h est appelée lorsqu’on essaie de diviser par 0.

 Interruptions logicielles :

 Ces interruptions sont appelées par le programme


Types d’interruptions (Exemple)

 Interruptions logicielles :

 Les interruptions logicielles sont utilisées pour exécuter des tâches logicielles ayant priorité
sur le programme principal

 Une interruption logicielle s’appelle avec l’instruction INT num où num est le numéro de
l’interruption.

 Chaque interruption peut avoir des sous-fonctions.

 Pour spécifier une sous-fonction, il faut placer dans un registre prédéterminé le numéro de la
sous-fonction voulu avant d’appeler l’interruption (le registre est souvent AH).

 La sous-routine de service de l’interruption testera la valeur du registre prédéterminé et aiguillera la


sous-routine en conséquence
Types d’interruptions (Exemple)

 Interruptions logicielles :

 Voici quelques exemples:

 INT 20h –Quitte le système d’exploitation.

 INT 21h / AH=09h –Sortie d’une chaîne de caractères depuis DS:DX.

 INT 21h / AH=0Ah –Entrée d’une chaîne de caractères vers DS:DX, le premier octet indique la taille du buffer, le
deuxième octet indique le nombre de caractères réellement lus.

 INT 21h / AH=4Ch –Quitte le système d’exploitation.

 INT 21h / AH=01h –lit un caractère sur l’entrée standard, avec echo, le résultat est stocké dans AL.

 INT 21h / AH=02h –écrit un caractère vers la sortie standard, DL = le caractère à écrire, après exécution, AL = DL.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Les signaux d’interruption :

 Les processeurs de la famille 80x86 possèdent trois bornes pour gérer les interruptions : NMI,
INTR, et INTA

 NMI : est utilisée pour envoyer au processeur une interruption non masquable (NMI, Non Maskable Interrupt).
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Les signaux d’interruption :

 NMI : Le processeur ne peut pas ignorer ce signal, et va exécuter la routine de traitement de l’instrcution.

 NMI : Ce signal est normalement utilisé pour détecter des erreurs matérielles (mémoire principale défaillante par exemple).
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Les signaux d’interruption :

 INTR : (Interrupt Request), demande d’interruption masquable.

 INTR : Utilisée pour indiquer au microprocesseur l’arrivée d’une interruption.

 INTA : (Interrupt Acknowledge) Cette borne est mise à 0 lorsque le processeur traite effectivement l’interruption signalée par INTR
(c’est à dire qu’elle n’est plus masquée).
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Indicateur IF:

 A un instant donné, les interruptions sont soit masquées soit autorisées, suivant l’état d’un
indicateur spécial du registre d’état, IF (Interrupt Flag)

– si IF = 1, le processeur accepte les demandes d’interruptions masquables, c’est à dire qu’il les
traite immédiatement ;

– si IF = 0, le processeur ignore ces interruptions.


Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Contrôleur d’interruptions :

 L’ordinateur est relié a plusieurs périphériques, mais nous


venons de voir qu’il n’y avait qu’un seul signal de demande
d’interruption, INTR.

 Le contrôleur d’interruptions est un circuit spécial, extérieur au


processeur,

 dont le rôle est de distribuer et de mettre en attente les demandes


d’interruptions provenant des différents périphériques.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 les connexions entre le MPU et le contrôleur d’interruptions

 Le contrôleur est rélié aux interfaces gérant les périphériques par


les bornes IRQ (InteRrupt reQuest).

 Il gère les demandes d’interruption envoyées par les périphériques, de


façon à les envoyer une par une au processeur (via INTR).

 Il est possible de programmer le contrôleur pour affecter des priorités


différentes à chaque périphérique.

 Avant d’envoyer l’interruption suivante, le contrôleur attend


d’avoir reçu le signal INTA, indiquant que le processeur a bien
traité l’interruption en cours.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Déroulement d’une interruption externe masquable :

 Reprenons les différents évènements liés à la réception d’une


interruption masquable :

1. Un signal INT est émis par un périphérique (ou plutôt par


l’interface gérant celui- ci).

2. Le contrôleur d’interruptions reçoit ce signal sur une de ses bornes


IRQi.

3. Dès que cela est possible (suivant les autres interruptions en attente de
traitement), le contrôleur envoie un signal sur sa borne INT.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Déroulement d’une interruption externe masquable :

4. Le MPU prend en compte le signal sur sa borne INTR après avoir


achevé l’exécution de l’instruction en cours. Si l’indicateur IF=0, le
signal est ignoré, sinon, la demande d’interruption est acceptée.

5. Si la demande est acceptée, le MPU met sa sortie INTA au


niveau 0, pour indiquer au contrôleur qu’il prend en compte sa
demande.

6. En réponse, le contrôleur d’interruption place le numéro de


l’interruption associé à la borne IRQi sur le bus de données.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Déroulement d’une interruption externe masquable :

7. Le processeur lit le numéro de l’interruption sur le bus de données et l’utilise pour trouver le vecteur
d’interruption. Ensuite, tout se passe comme pour un appel système (interruption logicielle), c’est à
dire que le processeur :

(a) sauvegarde les indicateurs du registre d’état sur la pile ;

(b) met l’indicateur IF à 0 (masque les interruptions suivantes) ;

(c) sauvegarde CS et IP sur la pile ;

(d) cherche dans la table des vecteurs d’interruptions l’adresse du traitant d’interruption, qu’il
charge dans CS:IP.
Types d’interruptions (Exemple)
 Interruptions externes ou matérielles:

 Déroulement d’une interruption externe masquable :

8. La procédure traitant l’interruption se déroule.

• Pendant ce temps, les interruptions sont masquées (IF=0).

9. La procédure se termine par l’instruction IRET, qui restaure CS, IP et les indicateurs à partir de la pile.

• ce qui permet de reprendre le programme qui avait été interrompu.


Les interruptions du DOS

• Nous présentons ici quelques interruptions du DOS les plus utilisées:

• Pour afficher un message ‘a’ l’écran ou saisir un caractère au clavier. D’une manière générale, toutes
les opérations d’entrées/sorties sont réalisées par les interruptions DOS.

• L’appel se fait via l’instruction int 21h.

• Le registre ah contient un numéro qui référence la fonctionnalité que l’on veut utiliser (9 pour afficher
une chaîne de caractères, 1 pour saisir la frappe d’un caractère au clavier, ...)
Les interruptions du DOS

• Affichages de caractères à l’écran data segment


msg db ‘bonjour ', 13 , 10 , '$'
ends
• Afficher un caractère à l’écran : stack segment
dw 128 dup(0)
mov dl, ’a’ ends
mov ah, 2 affiche le caractère «a» à l’écran. code segment
Int 21h mov ax,data
mov ds,ax
•Afficher un message à l’écran : mov ax,stack
mov ss,ax
• affiche le message bonjour à l’écran. La chaîne de caractères doit
mov ah,9
impérativement se terminer par un caractère ’$’. mov dx, msg
int 21h
• Les caractères 13 et 10 sont les codes ASCII des 2 caractères constituant mov ah,4ch
un retour-chariot. int 21h
end
Les interruptions du DOS

data segment
a db ?
• Saisir une frappe au clavier ends
stack segment
dw 128 dup(0)
• Saisie d’un caractère : ends
code segment
renvoie dans le registre al le code du caractère lu au clavier. mov ax, data
mov ds, ax
mov ah,01h
int 21h
mov a, al

mov ah,02h
mov dl,a
int 21h
mov ax,4Ch
int 21h
ends

Vous aimerez peut-être aussi