CONCEPTION D'UN OS - Segmentation & Interruptions
Interruptions - Principes
Principes
Les interruptions sont des événements extérieurs au programme ou à l'unité centrale qui arrêtent (déroutent) l'exécution du travail en cours, c'est-à-dire le flot d'exécution du processeur. A chaque interruption est associée une routine de traitement, appelée ISR (Interrupt Service Routine), qui permet d'exécuter le traitement de l'interruption.
Lorsque le processeur reçoit une interruption, il interrompt la tâche en cours après avoir sauvegardé le contexte de celle-ci, et la routine liée à l'interruption est alors executée. Une fois la routine executée, le processeur reprend la tache interrompue.
Types d'interruptions
Les interruptions peuvent être classées en trois catégories :
Les Exceptions :
Les exceptions sont internes au processeur. Elles se produisent lorsque le processeur se retrouve dans l’impossibilité d’effectuer une opération. Cette situation est consécutive à une erreur de programmation.
Les exceptions peuvent être par exemple la division par 0, une lecture dans une adresse où il n’y a pas de mémoire, une exception de virgule flottante, ...
Elles sont synchrones, car même si elles n'apparaissent pas explicitment dans le code, elles lui sont liées
Les Interruptions matérielles
Les Interruptions logicielles
Les interruptions matérielles, ou IRQ (Interrupt Request), sont des interruptions provenant du matériel externe au processeur. Les interruptions matérielles sont provoquées par des signaux électriques appliqués sur des broches du processeur destinées à cet effet, par exemple IRQ ou RESET.
Il existe en standard 16 interruptions matérielles : les IRQ, ou Interruption Request.
Les IRQ sont assignées au matériel : le processeur, la mémoire, les cartes d'extension, les périphériques, etc... Elle lui donne la possibilité d'interrompre le processeur lorsqu'il requiert un traitement immédiat. Par exemple, l'horloge système peut demander au processeur de mettre à jour l'heure, le clavier peut signifier l'appui sur une touche, ou le disque peut envoyer une interruption pour prevenir le processeur que des donnees sont prêtes en lecture, ...
Etant en quantité limitée, les IRQ ont longtemps été la cause de conflits matériels, car une IRQ ne peut être partagée que sous des conditions très strictes, et souvent, un tel partage amène des conflits et rend le système défaillant.
Voici un exemple d'interruption matéielle. Quand on presse ou qu'on relache une touche du clavier d'un PC, Une interruption est envoyée au processeur. Le processeur va en réponse exécuter une routine pour traiter l'évènement dont il a été averti par le processeur (une touche a ete pressée ou relachée). Cette routine va plus spécifiquement interroger le clavier pour savoir quelle touche a été pressée, puis il va eventuellement afficher le caractère correspondant et le stocker dans un buffer. Une fois la routine de traitement des caractères terminée, la tache interrompue reprend.
La ligne NMI provoque une interruption non-masquable, qui ne peut être empêchée par logiciel. La ligne INTR provoque une interruption seulement si le bit IF du registre EFLAGS est 1.
Les interruptions matérielles sont asynchrones car elles interrompent le flot d'exécution et ne lui sont pas du tout liées.
Les interruptions logicielles permettent de gerer les appels systemes.
Elles peuvent être vues comme un certain nombre de fonctions (int, int3, bound, ...). Ces fonctions rendent la programmation beaucoup plus facile, au lieu d'écrire du code pour imprimer un caractère il est possible de simplement appeler l'interruption qui le fera, on peut aussi lire ou écrire sur les disques à l'aide de ses interruptions.
Les interruptions logicielles sont déclenchées explicitement de manière synchrone par le logiciel/
Il y a au maximum 256 interruptions gérés par le système. Dans ces 256, il y a 32 exceptions, 16 interruptions matérielles et le reste pour les interruptions logicielles.
NB : Il est à noter que les routines son implantées par le développeur du système d'exploitation