Idee zur RDZ Verwaltung

Grundsätzliches:

  • Es soll schnell sein (Ansageplanung etc. ist trivial parallelisierbar, beim RDZ wird jedoch alles wieder in eine lineare Reihenfolge gebracht. Deshalb soll dieser Flaschenhals möglichst optimiert werden.)
    • → Arbeit in den Prozessorregistern statt den Speicher/Cache
    • → Nutzen mehrerer Prozessoren (versch. Prozesse bei UNIX, Threads bei Win.)
  • Datenstruktur: Einfach verkettete Liste
    • → Aufrufen ist sehr schnell (Einfach den Kopf der Liste entfernen)
    • → Ansagen muss optimiert werden

Voraussetzungen:

  • Konfigurationsvariable für die Anzahl verfügbarer Register: x\\Da es sich um eine Kette handelt, werden wohl für den Ansagezeiger und den Next-Zeiger je zwei Register benötigt, Bei Prozessoren mit 40 Registern müsste x also 20 sein.

Ansagen:

  • Jeder Prozess verwaltet x Ansagen und kennt den Prozess, der die nächsten x Ansagen verwlatet.
  • Bei neuen Ansagen wird die Routine für die Einordnung der neuen Ansage bei allen Prozessen simultan aufgerufen und abgearbeitet.
  • Der Letzte Punkt der Liste ist immer ein End-Event, das das RDZ löscht, wenn es aufgerufen wird.
  • Läuft die Liste eines einzelnen Prozesses voll, wird seine Liste in Zwei Hälften (und zwei Prozesse) aufgespalten. → Vorsicht, dies könnte langsam sein. → Es sollte das Kopieren von Listenelementen bei diesem Schritt möglichst vermieden werden.

Aufrufen:

  • Wenn ein Prozess leer wird, wird er gelöscht und der nächste Prozess als Beginn der Liste definiert.

Umsetzung

Mir geht es an dieser Stelle zunächst darum diese Idee zu dokumentieren, damit sie nicht verloren geht.

Es wäre allerdings eine Überlegung wert, dass jemand wie ich, der sich mit dem akkuraten c++ Programmieren etwas schwer tut (Eckert mag meine Quelltexte ja auch nicht) das Projekt auf diese Weise voran treibt. Eine Anleitung wie oben kann in relativ kurzer Zeit umgesetzt werden bzw. bei Problemen kann auch im Forum diskutiert werden. — Jonny 2008/12/02 15:09

Melde dich an um einen Kommentar zu erstellen.
 
 
 
     
 
engine/idee_zur_rdz_verwaltung.txt · Zuletzt geändert: 27.11.2016 00:24 (Externe Bearbeitung)