-
Nos services
-
- Etudiants
- Média Application Android digiSchool média Application iOS digiSchool média digiSchool média
- Documents Application Android digiSchool documents Application iOS digiSchool documents digiSchool documents
- Questions Application Android digiSchool questions Application iOS digiSchool questions digiSchool questions
- Alternance Application Android digiSchool alternance Application iOS digiSchool alternance digiSchool alternance
- Commerce Application Android digiSchool commerce Application iOS digiSchool commerce digiSchool commerce
- Ingénieurs Application Android digiSchool ingénieurs Application iOS digiSchool ingénieurs digiSchool ingénieurs
-
- Lycéens
- Bac ES Application Android digiSchool bac ES Application iOS digiSchool bac ES digiSchool bac ES
- Bac S Application Android digiSchool bac s Application iOS digiSchool bac S digiSchool bac S
- Bac L Application Android digiSchool bac L Application iOS digiSchool bac L digiSchool bac L
- Bac STMG Application Android digiSchool bac STMG Application iOS digiSchool bac STMG digiSchool bac STMG
- Bac PRO Application Android digiSchool bac PRO Application iOS digiSchool bac PRO digiSchool bac PRO
-
- Collégiens
- Devoirs Application Android digiSchool devoirs Application iOS digiSchool devoirs digiSchool devoirs
- Brevet Application Android digiSchool brevet Application iOS digiSchool brevet digiSchool brevet
-
l'activité en cours au profit d'une autre. La source peut être un autre processeur, un contrôleur
d'entrées-sorties ou tout autre dispositif physique externe. Le programme en cours d'exécution
suspend son activité au premier point interruptible. Le processeur exécute alors un programme
prédéfini de traitement de l'interruption. Les causes d'interruption sont multiples. Il faut donc être
capable de les distinguer et de les traiter chacune de façon spécifique. Pour cela on peut envisager
diverses méthodes :
1. si l'indicateur d'interruption est unique, le code de l'interruption est stocké quelque part
dans la mémoire et doit être lu par le programme de traitement.
2. s'il existe des indicateurs multiples, chacun est appelé niveau d'interruption. On attache un
programme différent de traitement à chacun de ces niveaux.
3. on peut utiliser simultanément ces deux méthodes. Chaque niveau d'interruption est
accompagné d'un code qui est lu par le programme de traitement de ce niveau. On
distingue alors les interruptions matérielles qui sont les différents niveaux et les
interruptions logicielles qui correspondent aux codes lus.
Chaque niveau d'interruption est affecté d'une priorité différente. En effet si deux niveaux étaient
activés simultanément il se produirait un conflit. Le système d'exploitation le résout en traitant
l'interruption la plus prioritaire. Ainsi l'activité qui a pour mission de contrôler la présence de la tension
d'alimentation - elle n'existe pas dans toutes les machines - et de basculer le fonctionnement sur des
batteries de sauvegarde doit être la plus prioritaire. Lorsqu'elle détecte une variation anormale de la
tension, elle arrête immédiatement tout fonctionnement et commute l'alimentation électrique. Par
convention le niveau de priorité le plus élevé est 0. La priorité décroît lorsque sa valeur augmente.
Lorsqu'on emploie une solution mixre (cas n°3) les niveaux d'interruption logiciels qui correspondent
au même niveau matériel sont affectés de la même priorité. Les conflits possibles sont gérés en
attachant à chaque niveau une file d'attente pour traiter successivement les causes d'interruptions.
Nous en verrons un exemple avec le temps partagé.
On peut schématiser les différents niveaux d'interruptions comme dans le schéma ci-contre. La
priorité va en décroissant du haut vers le bas.
Erreurs matérielles
Horloge
Requêtes disque
Requêtes réseau
Terminaux
Interruptions logicielles
Figure 2.2 Hiérarchie des interruptions
Un processus doit être protégée contre les interruptions moins prioritaires. On retarde donc
volontairement la commutation de contexte jusqu'à ce que le processus le plus prioritaire ait terminé
son travail ou soit lui-même interrompu par un autre plus prioritaire. Ceci est réalisé grâce à un
masque d'interruption attaché à chaque processus. En chaque point interruptible lorsqu'on consulte
les valeurs des niveaux d'interruption activés, ce masque cache les niveaux qui doivent être ignorés.
Le masque fait partie du mot d'état. Il est lui-même modifiable par une interruption. Un niveau
d'interruption peut être désarmé pour supprimer l'effet de l'arrivée d'un signal puis réarmé à la
demande. Ce mécanisme est programmable. Ainsi lorsque le système d'exploitation masque les
interruptions correspondant au disque, toutes les entrées-sorties sont inhibées qu'elles se fassent
avec le disque, le réseau ou les terminaux. Bien entendu les interruptions logicielles déclenchées par
les processus actifs le sont également puisque moins prioritaires. En général les unités centrales
comportent deux lignes de requêtes d'interruptions : la première ne peut pas être masquée. Elle est
réservée aux événements dits "non récupérables" comme les erreurs matérielles ainsi qu'à l'horloge
qui doit absolument garder son cadencement. La deuxième ligne comprend tous les autres
événements qui peuvent être interrompus avant toute séquence d'instructions critiques.
constructeur mais elles obéissent toutes à des principes communs. Leur rôle est de transférer le
traitement au programme approprié comme le schématise la figure 2.3. Pour gérer ce transfert on
pourrait concevoir un programme unique qui examinerait une information liée à l'interruption puis qui,
à son tour, appellerait un gestionnaire spécifique. Ceci n'est pas efficace car les interruptions doivent
être traitées le plus rapidement possible et on peut faire l'économie de ce double appel en utilisant
une table de pointeurs vers des programmes spécifiques de traitement. Cette table est stockée dans
les adresses basses de la machine. On l'appelle vecteur d'interruptions. Le système d'exploitation doit
savoir utiliser les informations contenues dans ce vecteur.