Wann wird bei einem RTOS der Scheduler aufgerufen?

OP #2402886
Lesenswert?
• ▲
▼
Wann wird bei einem RTOS, außer aus dem regelmäßigen Timerinterrupt für 
den Scheduler, der Scheduler sonst noch aufgerufen?

Als Beispiel soll Keil RTX für Cortex dienen, Pre-emptive Scheduling, 
Schedulertick soll 10 ms sein.

Fall 1:
Ein Interrupt wird ausgelöst, dadurch soll dann per Event ein Task 
angetriggert werden.
Laut http://www.keil.com/support/man/docs/rlarm/rlarm_ar_clock_task.htm
wird nach Ende der ISR der Scheduler durch Antriggern des 
Timerinterrupts direkt aufgerufen.

Fall 2:
Ein laufender Task ist an einem Punkt angelangt, an dem er auf ein Event 
wartet. Er geht dann in den Zustand wartend und gibt die Kontrolle an 
andere Tasks ab. Wird nun der Scheduler direkt aufgerufen oder erst 
wieder, wenn der Schedulertick kommt?
Das könnte dann ja im worst-case hier 10 ms dauern, wird dann in dieser 
Zeit die Rechenzeit "verbraten"?
#2402913
Lesenswert?
• ▲
▼
Was ich so an RTOS kennengelernt habe, wird dem Scheduler bei jedem 
Timertick und bei fast allen Kernel-API-Aufrufen die Gelegenheit gegeben 
die Task zu wechseln sofern eine höher priorisierte Task bereit ist.
Ob das bei Keil auch so ist, weis ich nicht, aber wie schon geschrieben, 
alles andere wäre dumm.

Sicher ist das aber ein Frage für den Support von Keil.
#2402921
Lesenswert?
• ▲
▼
Es gibt bei einem preemptive RTOS nicht selten zwei Sorten Interrupts. 
In das RTOS eingebettete und davon unabhängige.

Die unabhängigen rufen keine RTOS-Funktionen auf und kehren genau 
dorthin zurück, wo sie hergekommen sind.

Die eingebetteten können in eine andere Task zurückkehren als diejenige, 
die sie unterbrochen haben. Dabei ist es nicht relevant, ob dieser 
Interrupt vom RTOS-Timer stammt oder von irgendeiner Schnittstelle.

Bei eingebetteten Interrupts wie auch bei Kernel-Aufrufen gibt es oft 
ein Flag, das vor der Rückkehr zum Programm signalisiert, dass sich in 
der Task-Verwaltung etwas geändert hat und es sich lohnt, mal wieder 
nachzusehen, wohin die Reise gehen sollte. Wobei dieses Flag sogar in 
Hardware implementiert sein kann (Cortex-M).

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.