Quelle est la différence entre une ligne d'interruption et le numéro d'interruption?


1

Quelle est la différence entre une ligne d'interruption et un numéro d'interruption (comme 0x80)? De même, comment les IRQ sont-elles liées aux appels système?

+2

Je vais laisser la réponse à quelqu'un d'autre, mais vous une faveur énorme et passer un peu de temps en fouillant dans le chapitre 6 dans le vol. 3a du manuel du développeur Intel. C'est une ressource incroyable pour ce sujet: https://www.intel.com/content/www/us/en/architecture-and-technology/64-ia-32-architectures-software-developer-vol-3a-part- 1-manual.html 14 déc.. 172017-12-14 17:57:04

1

LMGTFY:

Une interruption est un signal à partir d'un dispositif, tel que le clavier, la CPU, lui disant d'arrêter immédiatement tout ce qu'il est en train de faire et faire autre chose. Par exemple, le contrôleur de clavier envoie une interruption lorsqu'une touche est enfoncée. Pour savoir comment appeler le noyau lorsqu'une interruption spécifique survient, la CPU dispose d'une table appelée IDT, qui est une table de vecteurs configurée par le système d'exploitation, et stockée en mémoire. Il y a 256 vecteurs d'interruption sur les processeurs x86, numérotés de 0 à 255, qui servent de points d'entrée dans le noyau. Le nombre de vecteurs d'interruption ou de points d'entrée pris en charge par une unité centrale diffère en fonction de l'architecture de la CPU.

Il y a généralement trois classes d'interruptions sur la plupart des plates-formes:

  • Exception: Ils sont générés automatiquement par le CPU et utilisé pour alerter le noyau en cours d'exécution d'un événement ou d'une situation qui requiert son attention. Sur les processeurs x86, ceux-ci comprennent des conditions d'exception telles que double défaut, défaillance de page, erreur de protection générale, etc.

  • Requête d'interruption (IRQ) ou matériel d'interruption: Ce type d'interruption est généré en externe par le chipset, et il est signalé par un verrouillage sur la broche #INTR ou un signal équivalent de la CPU en question. Il existe deux types d'IRQ couramment utilisés aujourd'hui.

    • Lignes IRQ ou IRQ à base de Pin: Ceux-ci sont généralement acheminés de manière statique sur le chipset. Les fils ou les lignes passent des dispositifs sur le chipset à un contrôleur IRQ qui sérialise les demandes d'interruption envoyées par les dispositifs, les envoyant un à un au CPU pour éviter les courses. Dans de nombreux cas, un contrôleur IRQ enverra plusieurs IRQ à la CPU en fonction de la priorité du périphérique. Un exemple de contrôleur IRQ très connu est la chaîne de contrôleur Intel 8259, présente sur tous les chipsets compatibles IBM-PC, enchaînant deux contrôleurs, chacun fournissant 8 broches d'entrée pour un total de 16 broches de signalisation IRQ utilisables sur l'ancien IBM. -PC.
    • Interruptions basées sur des messages: elles sont signalées en écrivant une valeur dans un emplacement de mémoire réservé pour des informations sur le dispositif d'interruption, l'interruption elle-même et les informations de vectorisation. Le périphérique est affecté à un emplacement auquel il appartient soit par le microprogramme, soit par le logiciel du noyau. Ensuite, une IRQ est générée par l'appareil en utilisant un protocole d'arbitrage spécifique au bus de l'appareil. Un exemple de bus qui fournit une fonctionnalité d'interruption basée sur un message est le bus PCI.
  • Software Interrompre: Ceci est une interruption signalée par le logiciel en cours d'exécution sur un CPU pour indiquer qu'il a besoin de l'attention du noyau. Ces types d'interruptions sont généralement utilisés pour les appels système. Sur les processeurs x86, l'instruction utilisée pour lancer une interruption logicielle est l'instruction "INT". Comme le processeur x86 peut utiliser n'importe lequel des 256 vecteurs d'interruption disponibles pour les interruptions logicielles, les noyaux en choisissent généralement un. Par exemple, de nombreux unix utilisent le vecteur 0x80 sur les plates-formes x86.