2017-02-08 3 views
0

Da im Leerlauf Tasks im Allgemeinen verwendet werden, um CPU-Zeit sicher zu verbrauchen, die von anderer Software nicht benötigt wird, was würde passieren, wenn es keine Leerlaufaufgabe gäbe? Würde das RTOS nur eines automatisch erstellen? Was für einen anderen Zweck haben Leerlaufaufgaben zusätzlich zum Zeitaufwand?Leerlaufzeit in RTOS

Antwort

0

was würde passieren, wenn es keine Leerlaufaufgabe gäbe? Würde das RTOS nur eines automatisch erstellen?

Ich bezweifle, dass es ein RTOS gibt, das das tun würde. Wenn es keine Leerlaufaufgabe gäbe, wäre die Liste der ausführbaren Aufgaben leer und der Scheduler würde wahrscheinlich abstürzen. Im Allgemeinen besteht der wichtigste Grund für die Existenz des Leerlauf-Threads darin, die Liste der ausführbaren Tasks "niemals leer" zu machen. Dies vereinfacht den Code des Schedulers.

Welchen anderen Zweck erfüllen auch Leerlaufaufgaben außer Zeit?

In einigen Systemen kann Leerlauf Task einige Aktivitäten mit niedriger Priorität ausführen (z. B. einige Garbage Collection). Es kann auch den Kern in den Energiesparmodus schalten, insbesondere bei eingebetteten Geräten. In diesem Fall, wenn die Leerlauf-Task ausgeführt wird, bedeutet dies, dass nichts mehr zu tun ist, so dass der Kern gestoppt werden kann und auf das nächste Ereignis warten kann (Hardware-Interrupt oder Timeout), ohne zu viel Energie zu verbrauchen. Wenn das nächste Ereignis eintrifft, wird der Kern von der Hardware geweckt und das Ereignis wird verarbeitet. Entweder wird ein "normaler" Thread gestartet, oder - wenn noch nichts mehr zu tun ist - wird der Thread im Leerlauf fortgesetzt und wechselt wieder in den Energiesparmodus.

+0

Vielen Dank für die ausführliche Antwort zu reduzieren! – guddu

0

Wenn die CPU-Uhr läuft, müssen Anweisungen ausgeführt werden; Wenn es keine Leerlaufaufgabe gab, ist das Betriebssystem defekt. Die Leerlaufschleife ist ein wesentlicher Teil des RTOS, keine Benutzeraufgabe, daher muss das RTOS nicht "automatisch eine erstellen".

Eine Benutzeraufgabe mit niedriger Priorität, die niemals nachgibt, verhindert, dass die Leerlaufschleife ausgeführt wird. was nicht unbedingt eine gute Sache ist. Solch eine Aufgabe ist nicht dasselbe wie die Leerlaufschleife. Zum einen würden alle CPU-Nutzungstools, die das RTOS unterstützt, jederzeit eine 100% ige Auslastung melden, wenn eine solche Task - die Ausführung der Leerlaufschleife nicht eingeschlossen - CPU-Auslastung ist, da die CPU immer bereit ist, auf ein Interrupt-Ereignis im Leerlauf zu reagieren. Die Schleife führt niemals dazu, dass eine fertige Aufgabe verzögert wird.

Die Leerlaufaufgabe, oder "Leerlaufschleife" ist in der Regel genau das, und leere Schleife, auf die der Programmzähler gesetzt ist, wenn nichts anderes zu tun ist. In einigen Architekturen kann die Schleife einen "Warte-für-Interrupt" -Befehl enthalten, der die Kernausführung stoppt (stoppt das Takten des Kerns), um den Stromverbrauch zu reduzieren. Da jeder Kontextwechsel notwendigerweise einen Interrupt erfordert, kann der Prozessor, wenn WFI unterstützt wird, einfach in dieser Schleife stoppen.

Einige RTOS unterstützen Benutzer-Hooks für die Leerlaufschleife; Run-to-Completion-Funktionen mit niedriger Priorität, die im Leerlaufkontext im Hintergrund arbeiten können.

0

Welchen anderen Zweck erfüllen Leerlaufaufgaben außer Zeit?
Am häufigsten hat es zwei Dinge:
1. Garbage (Ressource) Sammlung oder Reinigungs
2. Schritte einleiten Stromverbrauch

Verwandte Themen