Eigene Prozessverwaltung

Für die Ablaufplanung der Emulation der einzelnen Hardwarekomponenten auf das Betriebssystem zu setzen, funktioniert also nicht - dabei haben wir noch nicht einmal betrachtet, wie die einzelnen Threads synchronisiert werden könnten. Ein echtzeitfähiges Betriebssystem könnte theoretisch helfen, dann läuft der Emulator aber fast nirgendwo mehr.

Stellenmarkt
  1. Linux- und Datenbankadministrator (m/w/d)
    Müller Holding GmbH & Co. KG, Ulm-Jungingen
  2. IT Projektmanager (w/m/d)
    Pro Projekte-GmbH & Co. KG, Düsseldorf
Detailsuche

Bei einem echtzeitfähigen Betriebssystem läuft die Prozessplanung etwas anders als bei einem normalen Linux oder Windows. Hier kann für Echtzeitprozesse angegeben werden, mit welcher Frequenz diese ausgeführt werden sollen. Das ist genau, was der Emulator braucht. Also habe ich einfach selbst eine Prozessverwaltung programmiert. Natürlich eine wesentlich einfachere als die eines Betriebssystems, sie umfasst nur eine einfache Komponente für die Prozessverwaltung und ein Interface für die Threads. Die Klasse, welche die Prozessverwaltung realisiert, wird Scheduler genannt, weil sie einen Zeitplan (Schedule) erstellt und umsetzt.

Die einzelnen Threads laufen innerhalb eines Betriebssystemprozesses. Damit entfällt die Synchronisation, weil innerhalb des Prozesses die Abarbeitung Befehl für Befehl erfolgt. Die Prozessverwaltung, die ich implementiert habe, aktiviert jeweils die passende Hardwarekomponente. Außerdem habe ich auf kooperatives Multitasking gesetzt.

Kooperation macht Prozessverwaltung einfach

Kooperatives Multitasking bedeutet, dass Threads nicht von der Prozessverwaltung der Prozessor weggenommen wird. Stattdessen prüfen sie selbst, ob sie weiter laufen dürfen. Das vereinfacht die Implementierung deutlich, da kein sogenannter Kontextwechsel stattfindet. Die Prozessverwaltung ruft lediglich eine Funktion des Thread-Interfaces auf und erlaubt dem Thread damit, für eine gewisse Zeit Befehle auszuführen.

Golem Karrierewelt
  1. Jira für Systemadministratoren: virtueller Zwei-Tage-Workshop
    08./09.09.2022, virtuell
  2. Blender Grundkurs: virtueller Drei-Tage-Workshop
    06.-08.09.2022, Virtuell
Weitere IT-Trainings

Der aktive Thread prüft regelmäßig, ob er bereits länger aktiv war, als er durfte, und beendet in diesem Fall einfach die Funktion. Dadurch müssen keine Register gesichert werden, was im Fall von nicht-kooperativem Multitasking der Fall wäre. Betriebssysteme setzen das üblicherweise nicht um, denn es sorgt beim Programmieren für mehr Aufwand. Programmiererinnen und Programmierer sollen sich nicht mit den Details des Betriebssystems befassen müssen - das erledigt seinen Job leise im Hintergrund. Allerdings kann ein Programm dem Betriebssystem mitteilen, dass es aktuell nichts zu tun hat und seine Ausführung erst nach einer gewissen Zeit fortsetzen möchte.

Zwei Arten von Hardware

Bei genauer Betrachtung zeigt sich allerdings, dass es zwei verschiedene Arten von Hardwareprozessen gibt. Der Prozessor des Gameboy bildet nämlich eine Ausnahme, da er die anderen Komponenten - Grafik- und Soundhardware sowie den Timer - steuert. Sie geben dem Prozessor zwar über Programmunterbrechungen (Interrupts) Rückmeldungen, was sie gerade tun, das erfolgt aber nur zu vorhersehbaren Zeiten.

Daher habe ich zwei verschiedene Arten von Threads definiert. Die eine bezeichne ich als Echtzeit-Threads, die zu festen Zeiten aktiviert werden müssen. Darunter fällt alle Hardware bis auf den Prozessor. Für die anderen ist mir kein guter Name eingefallen, weshalb ich sie einfach als Threads bezeichnet habe. Die beiden Arten von Threads haben unterschiedliche Eigenschaften: Bei den normalen Threads vergeht für jede ausgeführte Operation Zeit, bei den Echtzeit-Threads nicht. Mit einer kleinen Ergänzung klingt das nicht mehr ganz so absurd: Es vergeht keine virtuelle Zeit - mehr dazu im nächsten Abschnitt.

Nintendo Switch (OLED-Modell) Weiss

Mit diesem Ansatz wird das Scheduling recht einfach. Es werden lediglich zwei Listen benötigt, eine für die Echtzeit-Threads, eine zweite für die normalen. Die Prozessverwaltung misst die virtuelle Zeit und prüft zuerst, ob ein Echtzeit-Thread abgearbeitet werden muss. Hat die virtuelle Uhr den Ausführungszeitpunkt eines Echtzeit-Threads erreicht, wird dieser aktiviert. Falls nicht, bestimmt sie die virtuelle Zeit bis zur Ausführung des nächsten Echtzeit-Threads, dann wird jeder normale Thread für diesen Zeitraum aktiviert.

Die Echtzeit-Threads teilen der Prozessverwaltung nach jeder Ausführung mit, zu welcher virtuellen Zeit sie das nächste Mal aktiviert werden sollen. Implementiert werden sie von den jeweiligen Funktionseinheiten - Grafik, Sound und Timer. Die Prozessverwaltung bleibt damit von den Details der Hardware unabhängig. Um die Liste mit den Echtzeit-Threads einfach prüfen zu können, ist sie nach den Ausführungszeiten sortiert - der nächste abzuarbeitende Echtzeit-Thread steht also immer an erster Stelle. Damit kommen wir zur Bedeutung der virtuellen Zeit.

Bitte aktivieren Sie Javascript.
Oder nutzen Sie das Golem-pur-Angebot
und lesen Golem.de
  • ohne Werbung
  • mit ausgeschaltetem Javascript
  • mit RSS-Volltext-Feed
 Emulator programmieren: Mit Software das Verhalten von Hardware nachbildenZeitsynchronisation 
  1.  
  2. 1
  3. 2
  4. 3
  5. 4
  6. 5
  7.  


jhi (Golem.de) 14. Jun 2022 / Themenstart

Ja, das ist richtig, aber auf der Ebene dessen, was ich an Code schreibe, findet er nicht...

Kommentieren



Aktuell auf der Startseite von Golem.de
Code-Genossenschaften
Mitbestimmung und Einheitsgehalt statt Frust im Hamsterrad

Programmieren ohne Chef, das klingt für Angestellte wie ein Traum. Kleine Unternehmen wagen eine hierarchiefreie Graswurzelrevolution.
Ein Bericht von Daniel Ziegener

Code-Genossenschaften: Mitbestimmung und Einheitsgehalt statt Frust im Hamsterrad
Artikel
  1. TADF Technologie: Samsung kauft Cynora in Bruchsal und entlässt alle
    TADF Technologie
    Samsung kauft Cynora in Bruchsal und entlässt alle

    Der Cynora-Chef wollte das deutsche Start-up zum Einhorn entwickeln. Nun wurden die Patente und die TADF-Technologie von Samsung für 300 Millionen Dollar gekauft und das Unternehmen zerschlagen.

  2. Gig-Economy: Flink-Fahrer wollen einen Betriebsrat
    Gig-Economy
    Flink-Fahrer wollen einen Betriebsrat

    Ein weiteres Start-up könnte eine Mitarbeiterorganisation bekommen. Das kündigten die Berliner Kuriere des Onlinelieferdienstes heute an.

  3. Geforce GTX 1630: Nvidia bringt extralahme Grafikkarte - wegen Intel
    Geforce GTX 1630
    Nvidia bringt extralahme Grafikkarte - wegen Intel

    Die Geforce GTX 1630 wird unter der Arc A380 positioniert, weshalb Nvidia einen alten Chip in stark beschnittener Form wieder aufleben lässt.

Du willst dich mit Golem.de beruflich verändern oder weiterbilden?
Zum Stellenmarkt
Zur Akademie
Zum Coaching
  • Schnäppchen, Rabatte und Top-Angebote
    Die besten Deals des Tages
    Daily Deals • PNY RTX 3080 12GB günstig wie nie: 929€ • MindStar (MSI RX 6700 XT 499€, G.Skill DDR4-3600 32GB 165€, AMD Ryzen 9 5900X 375€) • Nur noch heute: NBB Black Week • Top-TVs bis 53% Rabatt • Top-Gaming-PC mit AMD Ryzen 7 RTX 3070 Ti 1.700€ • Samsung Galaxy S20 FE 5G 128GB 359€ [Werbung]
    •  /