Zu guter Letzt bleibt nur noch das Vorstellen der nächsten Aufgabe, nämlich der Cellbuffer.
Bei der Cellbuffer sollen zwei Module entwickelt werden.
Zum einen haben wir ein Ringpuffer-Modul, den Cellbuffer selbst.
Der Ringpuffer soll dabei einfache Integerwerte speichern.
Was man dafür benötigt, ist ein Array, ein Leseindex und ein Schreibindex sowie die
Modulooperation, um den richtigen Index zum Lesen bzw. Schreiben zu ermitteln.
Um das Ganze ein bisschen interessanter zu machen, soll der Ringpuffer dabei
nebenläufigen Zugriff unterstützen. Als Einschränkung gilt hierbei jedoch,
dass es nur einen Produzenten gibt, das heißt einen Thread, der etwas in den Ringpuffer hineinschreibt
und mehrere Konsumenten, also mehrere Threads, die etwas aus dem Ringpuffer herausnehmen.
Dabei soll auf Semaphore und blockierende Synchronisation zurückgegriffen werden,
um den Zugriff zwischen Produzenten und Konsumenten zu koordinieren.
Dies dient der Vermeidung von Über- bzw. Unterläufen.
Die Produzenten selbst hingegen sollen untereinander nicht blockierend synchronisiert werden.
Dies soll auf Basis der CAS-Operation stattfinden.
In dem Semaphore-Modul sollt ihr eure eigene Semaphore implementieren.
Diese soll Funktionen zur Initialisierung und Zerstörung bereitstellen,
sowie die aus der Vorlesung bekannten P- und V-Imporationen.
Zugänglich über
Offener Zugang
Dauer
00:01:20 Min
Aufnahmedatum
2020-12-14
Hochgeladen am
2020-12-14 09:28:37
Sprache
de-DE