Chapitre02 - Le Système Dinterruption
Chapitre02 - Le Système Dinterruption
Chapitre02 - Le Système Dinterruption
1.1. Définitions :
- un processus représente l’exécution d’un programme comportant des instructions et des
séquences. C’est une entité dynamique (active) créée à un instant donné, qui disparaît en
général au bout d’un temps fini.
- un processus est un programme en cours d’exécution, composé de : code, données, pile
d’exécution, un compteur ordinal et autres informations caractérisant son état.
Prêt 2 En
exécution
1
4 3
En attente
- Prêt : le processus est placé dans la file d’attente des processus prêts, en attente
d’affectation du processeur.
- En exécution (Élu ou Actif) : le processus a été affecté à un processeur libre. Ses
instructions sont en exécution.
- En attente (Bloqué): Le processus attend qu’un événement se produise, comme
l’achèvement d’une opération d’E/S ou la réception d’un signal.
Le noyau de SE maintient une table pour gérer l'ensemble des processus. Cette table contient la
liste de tous les processus avec des informations concernant chaque processus.
Dans une entité logique (généralement un mot), le SE regroupe des informations clés sur le
fonctionnement du processeur : c’est le mot (registre) d’état du processus (Processus Status
Word, PSW). Ce dernier comporte généralement, la valeur du compteur ordinal, des
informations sur les interruptions (masquées ou non), le privilège du processeur (mode
maître ou esclave),…etc. Le mécanisme de changement d’état permet en une seule opération
indivisible de :
Remarque :
C’est une commutation de mot d’état provoqué par un évènement qui peut être interne
au processus et résultant de son exécution, ou extérieur et indépendant de cette exécution.
En effet, l’interruption permet de forcer un processeur à suspendre l’exécution du
programme (processus) en cours et à exécuter un programme spécifié : c’est le programme
d’interruption.
· Interruptions logicielles : Elles sont appelées par une instruction à l'intérieur d'un
programme. Ces interruptions ont une fonction définie, par exemple la lecture et
l'écriture sur le disque, l'écriture des données à l'écran, etc.
Fonction DOS (Fct 09h) : permet d’afficher, par appel (interruption) système de fonctin
MsDos, un message sur l’écran.
- Interruptions matérielles : Elles sont déclenchées par une unité électronique (lecteur,
clavier, contrôleur de périphérique, panne de courant,....) ou par l'horloge.
A chaque interruption, est associée une priorité (système d'interruptions hiérarchisées) qui
permet de regrouper les interruptions en classes.
Règle : Une interruption de priorité j est plus prioritaire qu'une interruption de niveau i
si j > i.
Selon cette hiérarchie de priorité, on peut envisager une interruption en cascade dans le cas
où la routine d’interruption elle‐ même peut être interrompue par une interruption plus
prioritaire.
L’état de l’indicateur IF peut être modifié à l’aide de deux instructions, CLI (CLear IF pour la
mise à 0 de IF), et STI (SeT IF, pour la mise à 1 de IF).
2.5. Déroutement : Quand un indicateur de changement d’état est modifié par une
Les programmes associés aux interruptions sont appelés les routines d’interruptions. Cette
routine est un programme qui peut accéder à toutes les instructions du langage machine
du processeur. La fin de cette routine est signalée par l’instruction IRET (Interrupt RETurn)
qui ordonne au processeur de reprendre l’exécution du programme interrompu exactement là
où il avait été abandonné.
Exemple : l’adresse de la routine d’interruption 0 figure dans l’entrée 0 de la table i.e. 0h à 3h.
Remarque : pour calculer la cellule mémoire dans laquelle est stockée l’adresse début de la
routine d’interruption, il suffit de multiplier le numéro de l’interruption par 4.
Le contrôleur est relié 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.
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. Dès que cela est
possible (suivant les autres interruptions en attente de traitement), le contrôleur envoie un
signal au processeur sur sa borne INT.
3. Le processeur prend en compte le signal sur sa borne INTR après avoir achevé l’exécution
de l’instruction en cours (ce qui peut prendre quelques cycles d’horloge). Si l’indicateur IF=0,
le signal est ignoré, sinon, la demande d’interruption est acceptée.
4. Si la demande est acceptée, le processeur met sa sortie INTA au niveau 0 pendant deux
cycles d’horloge, pour indiquer au contrôleur qu’il prend en compte sa demande.
6. Le processeur lit le numéro de l’interruption sur le bus de données et l’utilise pour trouver le
vecteur d’interruption (afin de traiter l’interruption). Ensuite, tout se passe comme pour un
appel système, c’est‐à‐dire que le processeur :
- Sauvegarde les indicateurs du registre d’état sur la pile (en d’autres termes il conserve l’état
de la mémoire concernant le programme en cours d’exécution) ;
8. La procédure se termine par l’instruction IRET qui permet de reprendre le programme qui
avait été interrompu.
Toutes les interruptions ainsi que les structures de données correspondantes sont déclarées dans
le fichier dos.h.
Exemple d’interruptions :