Un périphérique attire l'attention du processeur via un processus appelé gestion des interruptions. . Voici une répartition :
1. Demande d'appareil : Un périphérique (comme un clavier, une souris, un disque dur, une carte réseau, etc.) nécessite l'attention du processeur. Cela se produit lorsque l'appareil termine une opération (par exemple, une pression sur une touche, la fin du transfert de données) ou rencontre une erreur.
2. Signal d'interruption : L'appareil envoie un signal *demande d'interruption (IRQ)* au processeur. Ce signal est généralement envoyé via une ligne matérielle dédiée. L'interruption est essentiellement un signal disant "Hey CPU, j'ai besoin de toi!"
3. Contrôleur d'interruption : Avant d'atteindre directement le CPU, l'IRQ passe souvent par un *contrôleur d'interruption*. Ce contrôleur gère les demandes d'interruption de plusieurs appareils, en les hiérarchisant et en garantissant qu'une seule interruption est traitée à la fois. Le contrôleur peut également effectuer un masquage des interruptions (en ignorant certaines interruptions) en fonction des priorités du système.
4. Routine de gestion des interruptions : Le CPU, dès réception du signal d'interruption, arrête son exécution en cours (en sauvegardant son état) et passe à un *gestionnaire d'interruption* prédéfini (ou routine de service d'interruption - ISR). Il s'agit d'un morceau de code spécifique conçu pour gérer les requêtes de cet appareil particulier.
5. Demande de service : Le gestionnaire d'interruption examine la source de l'interruption (quel périphérique l'a générée) et prend l'action appropriée. Cela peut impliquer la lecture de données à partir de l'appareil, l'envoi de données à l'appareil ou la gestion d'une condition d'erreur.
6. Retour après interruption : Après avoir traité la demande d'interruption, le gestionnaire d'interruption restaure l'état du processeur avant l'interruption et rend le contrôle au programme qui a été interrompu. Le CPU reprend son exécution là où il s'était arrêté.
Différents types d'interruptions :
* Interruptions matérielles : Généré par des périphériques matériels comme ceux mentionnés ci-dessus.
* Interruptions logicielles : Généré par des instructions logicielles (par exemple, instruction `int` dans x86). Ceux-ci sont souvent utilisés pour les appels système ou les exceptions.
Priorité et planification :
Le processeur et le contrôleur d'interruption gèrent les priorités d'interruption. Les interruptions de priorité plus élevée peuvent interrompre celles de priorité inférieure. Le planificateur du système d'exploitation joue un rôle crucial dans la gestion de ces interruptions et garantit que les périphériques critiques sont rapidement réparés. Un système d'interruption mal conçu peut entraîner une instabilité du système ou une perte de données.
En bref, il s'agit d'une interaction matériel-logiciel coordonnée dans laquelle l'appareil signale un besoin d'attention, le système priorise et gère cette demande, et le processeur se concentre temporairement sur l'entretien de l'appareil avant de reprendre sa tâche précédente.
|