-
-
Erfahrener Benutzer
Roboter Genie
Hallo daiyama
Als "alter" Apple Fan, kann ich dir wärmstens das Prinzip der Event Loop der alten Macintosh Betriebssysteme empfehlen. Ich habe dieses früher mal bei der Entwicklung eines Minitel Terminals schon mal als RTOS selbst programmiert. Das Event Loop Prinzip war damals eine Revolution verglichen mit den noch älteren "modalen" Betriebssystemen.
Die Idee ist einfach eine Programmschleife zu machen, welche die Kontrolle über die Ausführung nacheinander an Programmcode-Module übergeben die in einer Warteschlange sind. Das zuletzt ausgeführte Modul wird dann an das Ende der Warteschlange gesetzt, das Oberste startet.
Damit das funktioniert, müssen die Module so programmiert werden, das sie immer nur eine kurze Ausführungszeit erfordern.
Wie man das implementiert hängt vom System und seinen Möglichkeiten ab. Bei Apple war es Interrupt gesteuert. "Unsoziale" Module setzten den Flag der Interrupts unterbindet, was damals für böses Blut sorgte. Bei einem AVR würde ich nicht mit Interrupts arbeiten, sondern einfach bei meinem Code-Modulen regelmäßig eine Routine zum Sichern der Ablaufumgebung aufrufen und an die "Main Event Loop" abgeben.
Die Verteilung der Rechnerresourcen ist hierbei natürlich nicht deterministisch, der overhead aber überraschend gering.
Tut mir leid keinen echten Code verfügbar zu haben. Könnte zwar aus den "Inside Macintosh" Büchern war rausziehen, ist aber viel zu aufwendig realisiert und in 68k Assembler.
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen