Interrupt-Priorität des System-Tick-Timers und blockierte Interrupts

621
Nik Novák

Angenommen, wir haben ein Betriebssystem, das auf einer CPU läuft, die vollständig mit ihren Anforderungen kompatibel ist. Dieses Betriebssystem ist tickgesteuert. Der System-Tick-Interrupt kommt vom externen Timer (periodischer Modus), der zur Vereinfachung mit einem CPU-IRQn-Pin verbunden ist.

IRQ-Pins sind nach Interrupt-Priorität sortiert. IRQ0 hat die höchste Priorität und IRQn hat die niedrigste Priorität. Priorität hat es mindestens aus zwei Gründen. Die erste ist natürlich, wenn zwei Interrupts zusammenkommen, eine mit höherer Priorität wird ausgewählt. Der zweite Grund ist folgender: Wenn ein Interrupt auftritt, werden weitere Interrupts von der Hardware deaktiviert. Wenn Interrupts in ISR aktiviert sind (mögliche Verschachtelungsinterrupts), können nur Interrupts mit höherer Priorität auftreten. Und ich habe einige Fragen dazu.

Meine erste Frage ist wahrscheinlich sehr einfach und ich kann sie selbst beantworten (vielleicht), aber ich möchte eine verlässliche Antwort lesen.

  • Wie wählt man die Timer-Tick-Priorität? Ist es die niedrigste Interrupt-Priorität im System? *

Hier ist die zweite Frage.

  • Was passiert, wenn der Timer-Tick-Interrupt genau dann auftritt, wenn die CPU einen oder mehrere weitere Interrupts bedient und weitere Interrupts deaktiviert sind?

Und hier ist ein Zusatz von mir. Wenn die obige Situation (in der zweiten Frage) auftreten kann, besteht die Möglichkeit, dass das System-Tick verloren geht. Kann es große Probleme geben?

* Wenn die Timer-Tick-Priorität nicht die niedrigste Interrupt-Priorität im System war, kann es zu einer Situation kommen, in der sich die CPU in ISR mit niedrigerer Priorität als der System-Tick-Interrupt befindet und weitere Interrupts aktiviert, und der Benutzerprozess, den wir für die potenzielle Planung benötigen, irgendwo gespeichert ist auf dem Stapel, wo wir es in der System-Tick-Routine nicht finden können.

Ich weiß, dass alles systemabhängig sein kann, aber ich interessiere mich für typische Lösungen, die dieser Situation ähneln.

Entschuldigung für mein Englisch.

0
Sie mischen eine Menge verschiedener [Fragen] (http://superuser.com/questions/1012978/system-tick-timer-interrupt-in-smp) und Ideen. "Wie wählt man die Timer-Tick-Priorität?" Hängt vollständig von Ihnen ab und von dem, was Sie erstellen, insbesondere wenn Sie von CPU-Interrupts sprechen (was stark vom System abhängig ist). Was genau versuchen Sie zu tun? Möglicherweise erhalten Sie auch eine bessere Antwort auf eine andere StackExchange-Site (wie StackOverflow). txtechhelp vor 8 Jahren 0
@txtechhelp Vielen Dank für Ihre Zeit. Ich schrieb es. Ich bin auf der Suche nach jeder wirklich typischen Lösung, die dieser Situation ähnlich ist. Zum Beispiel Linux mit Armarchitektur. Oder mit x86. Oder wählen Sie die Bedingungen vollständig selbst aus. Es kann sogar eine lange Antwort geben. Nik Novák vor 8 Jahren 0

0 Antworten auf die Frage