Chapitre 2 Les Interruptions
Chapitre 2 Les Interruptions
Chapitre 2 Les Interruptions
1. Introduction :
Ces deux types de programmes se partagent les ressources communes de la machine et plus
particulièrement le processeur. Lorsqu’un programme est en cours d’exécution, plusieurs
événements peuvent arriver :
La supervision de ces deux types d’événements se fait par des contrôles continus sur l’arrivée
de ceux-ci.
2. Notions de base :
B. H. 1
noyau pour le compte d’un processus. Ces notions de noyau et d’appel-système
permettent de protéger les données sensibles, celles du noyau, car seul celui-ci peut les
modifier. De plus, un appel-système n’est pas interruptible, ce qui fait qu’il n’y a pas de
concurrence entre ceux-ci.
Une machine est composée schématiquement d’un processeur (CPU), d’une mémoire
principale et d’organes d’E/S. Le processeur est un circuit actif qui comporte des registres
généraux et des registres spécialisés. L’ensemble des registres spécialisés forment le mot
d’état du processeur (MEP ou PSW pour : Processor Status Word).
La notion de mode a été introduite essentiellement pour des raisons de protection, afin qu’un
programme quelconque ne puisse accéder à des zones ou à des registres propres au SE. Dans
la pratique, la CPU distingue les instructions normales et les instructions privilégiées. Ces
dernières ne sont utilisables qu’en mode maître. Elles permettent en général la modification
des registres spécialisés et le dialogue avec les unités d’E/S.
Partons du principe que le SE s’exécute en mode maître et que les programmes utilisateur
s’exécutent en mode esclave. La programmation directe des E/S est donc réservée au SE et
les E/S des programmes utilisateurs devront passer par des requêtes au SE.
Chaque processus est représenté par une structure appelée Bloc de Contrôle du Processus
(ou PCB en anglais : Process Control Bloc) et qui renferme le contexte du processus, ce
contexte permettra de reprendre l'exécution du processus après une interruption de son
exécution. Les données des contextes contiennent les informations suivantes :
Définition Une interruption est un signal déclenché par un événement interne à la machine
ou externe, provoquant l'arrêt d'un programme en cours d'exécution à la fin de l'opération
courante (à un point observable (interruptible) du processeur central), au profit d'un
B. H. 2
programme plus prioritaire appelé programme d'interruption. Ensuite, le programme
interrompu reprend son exécution à l'endroit où il avait été interrompu.
Ces interruptions sont les sonnettes que tirent les périphériques pour dire au processeur que
quelque chose se passe. Mais si chaque périphérique pouvait envoyer directement un signal
au processeur, il faudrait sur celui-ci autant de broches (jouant le rôle de cordons de sonnette)
que de périphériques. Pour éviter cela, les périphériques envoient leur requête d'interruption
à une puce à laquelle ils sont connectés, c’est le contrôleur d'interruption. C'est ce
contrôleur qui va envoyer à leur place une interruption au processeur. Les requêtes faites par
le contrôleur sont appelées IRQ (Interrupt Request).
4. Commutation de contexte :
1
Overhead : Temps d'exécution des fonctions systèmes 3
B. H.
Le basculement d'un processus à l'autre est géré par
le noyau, Cette opération est généralement décidée
et réalisée par l'ordonnanceur :
• Suspendre le processus P0
• Sauvegarder et mettre à jour le PCB du
processus P0
• Charger le PCB du processus P1
• Démarrer processus P1
5. Vecteur d’interruptions :
Lorsque le signal d’une interruption arrive, il modifie l'état d'un indicateur (drapeau ou flag)
dans le registre d’interruptions qui est régulièrement testé par l'unité centrale. Une fois que
le signal est détecté, il faut déterminer la cause de l'interruption. Pour cela on utilise un
indicateur, pour les différentes causes d’interruption. On utilise cet indicateur pour accéder à
un vecteur d’interruptions qui associe à chaque type d’interruption l’adresse de la routine
d’interruption correspondante. Un vecteur d’interruption a donc la structure suivante :
B. H. 4
6. Mécanismes de gestion des interruptions :
Une interruption ne peut arriver au processeur que dans les conditions suivantes :
− Système d’interruption actif : Dans certains cas, le processeur a besoin d’interdire toute
interruption possible. Pour cela, il dispose d’un mécanisme d’activation/désactivation
globale des interruptions. Dans ces conditions, aucune interruption ne peut interrompre
l’UC, et toute interruption est retardée à la prochaine activation du système d’interruption.
− L’interruption est armée : Une interruption désarmée ne peut interrompre l’UC. Ceci se
passe comme si la cause de l’interruption était supprimée. Toute demande d’interruption faite
durant son désarmement est perdue. On utilise ce procédé quand on désire qu’un élément ne
doive plus interrompre.
B. H. 5
différentes causes d’interruption. Ainsi, les interruptions de même niveau de priorité ou d’un
niveau plus bas peuvent être masquées, alors qu’une interruption de priorité supérieure est
en cours d’exécution.
Lors d’une interruption de cause k, la CPU effectue dès la fin de l’instruction en cours les
actions suivantes :
1. sauvegarder la valeur du compteur ordinal et le mode d’exécution (dans une pile ou
dans une case mémoire particulière suivant les CPU) ;
2. passer en mode maître ;
3. forcer dans le compteur ordinal la valeur vi[k], c’est à dire l’adresse de la première
instruction de la routine associée à l’interruption de cause k.
L’étape 4 est souvent réalisée au moyen d’une instruction de la CPU qui provoque le retour
au programme interrompu (LPSW : Load-PSW qui signifie, Chargé le mot d’état du
processeur). Cette étape est appelée l’acquittement de l’interruption.
7. Types d’interruption :
Les interruptions peuvent d’être d’origines diverses, mais on peut les classer en deux grandes
classes :
− Les interruptions externes ou matérielles.
− Les interruptions internes ou logicielles.
B. H. 6
de l’exécution du programme en cours et qu’il n’est pas possible de prévoir leur arrivée.)
sont dues à :
− Périphérique prêt.
− Erreur durant l’E/S.
− Fin d’E/S.
− Ecoulement d’un délai de garde (horloge) : (voir partie TD)
− Réinitialisation du système.
− …etc.
Certaines de ces interruptions sont pré-affectées, mais beaucoup d'entre elles ne sont
affectées à des événements périphériques que lors de la configuration de la machine.
En voici quelques-unes :
B. Les appels au superviseur (SuperVisor Call ou SVC) qui est une instruction
permettant, à partir d’un programme utilisateur d’accéder à un service du SE (Ex.
B. H. 7
demande d’E/S, allocation dynamique de la mémoire, fin de programme, accès à un
fichier, …etc.).
B. H. 8
Remarque : La distinction entre interruption, déroutement et appel au superviseur se
base sur la fonction, mais le mécanisme est commun.
On peut envisager une hiérarchie de priorité des interruptions. Ainsi, lorsque plusieurs
interruptions arrivent en même temps, c’est la plus prioritaire qui est pris en charge en
premier. Cela implique aussi que la routine elle-même d’une interruption peut être
interrompue par une interruption plus prioritaire (voir figure 6).
1 2
2
1
Les fils d’interruptions peuvent être hiérarchisés c’est-à-dire classés par ordre de priorités
respectives. Un traitant d’interruption peut donc être lui-même interrompu par une demande
d’interruption intervenant sur un fil de priorité supérieure. Il passe alors à l’état d’attente. La
figure 7 représente l’activité des programmes dans le temps pour un système hiérarchisé à 8
niveaux où le niveau 0 est le plus prioritaire, le niveau 7 correspondant au programme
d’arrière-plan (moins prioritaire).
Chaque niveau d’interruption peut être dans l’un des états suivants :
B. H. 9
– état d’attente : l’interruption peut être prise en compte immédiatement si deux conditions
sont remplies :
– aucun niveau de priorité supérieure n’est en état d’attente ;
– la CPU se trouve dans une phase interruptible (fin d’instruction).
Le niveau passe alors à l’état actif.
– état actif : il implique la prise en compte de l’interruption par la CPU et dure pendant toute
la durée du traitant d’interruption.
Des instructions privilégiées permettent d’armer (ou de désarmer), d’autoriser (ou de
masquer), de déclencher un ou plusieurs niveaux d’interruption. Lorsque le nombre de
niveaux d’interruption est limité, un registre spécialisé de la CPU contient ce que l’on appelle
le masque d’interruption. A chaque niveau est associé un bit indiquant s’il est autorisé ou
masqué.
B. H. 10