|
|
|
|
|
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
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:
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
|
|
|
|
|
|
|
|