Système d'exploitation - Partie 4
Interruption logicielle
Une interruption logicielle est un message envoyé à un processus pour l'informer qu'un événement s'est produit. À la différence d'une interruption matérielle, qui est un message envoyé à l'unité centrale (CPU) pour l'informer qu'un événement s'est produit. Les interruptions logicielles sont similaires aux interruptions matérielles : elles entraînent un changement par rapport au processus en cours d'exécution. De même, les interruptions matérielles et logicielles exécutent une routine de service d'interruption.
Les interruptions logicielles peuvent être des événements normaux. On s'attend à ce qu'une tranche de temps se produise, ce qui oblige le noyau à effectuer un changement de contexte. Un programme informatique peut définir un temporisateur pour qu'il se déclenche après quelques secondes si un volume de données trop important ralentit un algorithme.
Les interruptions logicielles peuvent être des conditions d'erreur, comme une instruction machine mal formée. Cependant, les conditions d'erreur les plus courantes sont la division par zéro et l'accès à une adresse mémoire invalide.
Les utilisateurs peuvent envoyer des messages au noyau pour modifier le comportement d'un processus en cours d'exécution. Par exemple, en ligne de commande, appuyer sur le caractère d'interruption (généralement Ctrl-C) peut mettre fin au processus en cours d'exécution.
Pour générer des interruptions logicielles sur les processeurs x86, l'instruction assembleur INT est disponible. La syntaxe est INT X, où X est le numéro de décalage (au format hexadécimal) par rapport à la table des vecteurs d'interruption.
Signal
Pour générer des interruptions logicielles dans les systèmes d'exploitation de type Unix, l'appel système kill(pid,signum) envoie un signal à un autre processus. pid est l'identifiant du processus récepteur. signum est le numéro du signal (au format mnémonique) [b] à envoyer. (Le nom abrasif « kill » a été choisi car les premières implémentations ne faisaient que terminer le processus.)
Dans les systèmes d'exploitation de type Unix, les signaux informent les processus de l'occurrence d'événements asynchrones. Pour communiquer de manière asynchrone, des interruptions sont nécessaires. L'une des raisons pour lesquelles un processus doit communiquer de manière asynchrone avec un autre processus résout une variante du problème classique de lecture/écriture. Le scripteur reçoit un tube du shell pour que sa sortie soit envoyée au flux d'entrée du lecteur. La syntaxe de la ligne de commande est alpha | bravo. Alpha écrit dans le pipeline lorsque son calcul est prêt, puis se met en file d'attente. Bravo est alors déplacé vers la file d'attente et lit rapidement son flux d'entrée. Le noyau génère des interruptions logicielles pour coordonner le pipeline.
Les signaux peuvent être classés en 7 catégories :
lorsqu'un processus se termine normalement ;
lorsqu'un processus présente une exception d'erreur ;
lorsqu'un processus est à court de ressources système ;
lorsqu'un processus exécute une instruction illégale ;
lorsqu'un processus déclenche une alarme ;
lorsqu'un processus est interrompu depuis le clavier ;
lorsqu'un processus reçoit une alerte de traçage pour le débogage.
Interruption matérielle
Les périphériques d'entrée/sortie (E/S) sont plus lents que le processeur. Par conséquent, si le processeur devait attendre la fin de chaque E/S, cela ralentirait l'ordinateur. À la place, un ordinateur peut implémenter des interruptions pour la fin des E/S, évitant ainsi le recours à l'interrogation ou à l'attente.
Certains ordinateurs nécessitent une interruption pour chaque caractère ou mot, ce qui consomme beaucoup de temps processeur. L'accès direct à la mémoire (DMA) est une fonctionnalité d'architecture permettant aux périphériques de contourner le processeur et d'accéder directement à la mémoire principale. (Indépendamment de l'architecture, un périphérique peut effectuer un accès direct à la mémoire principale, soit directement, soit via un bus.)
Entrées/Sorties
E/S pilotées par interruption
Lorsqu'un utilisateur tape une touche au clavier, le caractère apparaît généralement immédiatement à l'écran. De même, lorsqu'il déplace une souris, le curseur se déplace immédiatement sur l'écran. Chaque frappe et chaque mouvement de souris génèrent une interruption appelée E/S pilotée par interruption. Une E/S pilotée par interruption se produit lorsqu'un processus provoque une interruption pour chaque caractère ou mot transmis.
Accès direct à la mémoire
Les périphériques tels que les disques durs, les disques SSD et les lecteurs de bande magnétique peuvent transférer des données à un débit suffisamment élevé pour qu'interrompre le processeur pour chaque octet ou mot transféré, et que le processeur transfère l'octet ou le mot entre le périphérique et la mémoire, nécessite trop de temps processeur. Les données sont, au contraire, transférées entre le périphérique et la mémoire indépendamment du processeur par un matériel tel qu'un canal ou un contrôleur d'accès direct à la mémoire ; une interruption n'est délivrée que lorsque toutes les données sont transférées.
Link 1
Link 2
Link 3
Link 4
Link 5
Link 6
Link 7
Link 8
Link 9
Link 10
Link 11
Link 12
Link 13
Link 14
Link 15
Ajouter un commentaire