2010-12-10 44 views
1

Pourriez-vous me dire comment le matériel/pilote déclenche une interruption? et dans un SMP, quelle CPU est interrompue? Si l'IRQ est partagée par plusieurs périphériques, la manière dont le noyau identifie le périphérique qui a provoqué l'interruption.Question concernant la gestion des interruptions et des interruptions

/Ganesh

+0

Je suis intéressé par votre question, mais je dois vous avertir: vous êtes un peu vague sur "comment le matériel/pilote déclenche une interruption". En termes simples, le HW exécute le code à un vecteur d'interruption donné. C'est comme ça que c'est fait. Je suppose que vous voulez quelque chose de plus spécifique. –

+0

Je veux dire que chaque fois que le matériel périphérique a besoin de l'attention du processeur, il déclenche une interruption, n'est-ce pas? L'UC exécute le gestionnaire d'interruption pour cette interruption. Maintenant, ma question comment le matériel soulève une interruption (En exécutant une instruction ou ...) –

Répondre

1

Traditionnellement, il y a un fil d'interruption réel qui court à partir du dispositif vers le contrôleur d'interruption, lorsqu'elle est élevée (ou faible, ou sur un bord) une interruption est générée et l'unité centrale commence à exécuter le gestionnaire d'interruption. Sur les systèmes modernes, les interruptions ont tendance à être des messages sur un bus qui sont envoyés au contrôleur d'interruption (ou il peut y en avoir plusieurs).

En termes de détails, vous devrez être plus précis, les détails varient selon le type de matériel dont vous parlez.

+0

Pourriez-vous s'il vous plaît laissez-moi savoir comment l'appareil génère une interruption sur une machine x86? –

+0

Ce n'est pas une question de x86 ou pas, c'est PCI vs Hypertransport, vs périphériques sur puce, etc – mpe

+0

Comment le périphérique rend la ligne d'interruption connecté PCI haute? –

0

Le gestionnaire d'interruption également appelé ISR fait partie du pilote de périphérique dans le système d'exploitation. Dans OS, chaque numéro irq représente une ligne d'interruption du contrôleur d'interruption.

Les unités sont connectées en dur au contrôleur d'interruption et le contrôleur d'interruption signale la CPU correspondante si des interruptions sont générées dans les dispositifs. Les CPU cibles d'interruption sont programmables dans le contrôleur d'interruption pour chaque ligne d'interruption.

Pour partager des numéros d'interruption dans le matériel, comme GPIO dans ARM, le contrôleur d'interruption ou le périphérique doit fournir un registre supplémentaire pour le numéro d'interruption réelle. De plus, l'ISR devrait consulter ce registre pour le véritable numéro d'IRQ.