TU BRAUNSCHWEIG
| Carl-Friedrich-Gauß-Fakultät | Informatik
Informatikzentrum

Implementierung einer Speicherallokation für nichtflüchtigen RAM

BetreuerArthur Martens
ProfessorProf. Dr. Rüdiger Kapitza
Projektdanceos
IBR GruppeDS (Prof. Kapitza)
ArtBachelorarbeit
Statusabgeschlossen

Problemstellung

Heutige Computer sind sehr anfällig gegenüber Abstürzen und Stromausfällen. Tritt beispielsweise ein Fehler im Betriebssystem auf, ist die übliche Reaktion ein abrupter Neustart des Systems. Alle Daten, die sich zu dem Zeitpunkt im Hauptspeicher befinden, gehen dabei verloren. Ähnlich verhält sich das System bei einem Stromausfall. Will man Daten persistent machen, so legt man diese heutzutage üblicherweise in den Hintergrundspeicher, wie beispielsweise Festplatte oder Solid-State-Disks (SSD). Trotz der erhöhten Datenraten von SSDs gegenüber Festplatten, bleibt der Zugriff auf den Hintergrundspeicher im Vergleich zu DRAM sehr langsam. Grund hierfür sind höhere Zugriffszeiten und die blockweise Adressierung.

Abhilfe hierfür versprechen neue Techniken im Bereich von Byte-adressierbaren Speicherbausteinen wie Phase-Change-Memory(PCM) und Spin-Transfer-Torque-Memory (STTM). Diese Speicher vereinen die Vorteile von DRAM (Byte-Adressierung und geringe Zugriffszeiten) mit der Persistenz von heutigen Festplatten. Will man jedoch alle Eigenschaften dieser Speicherbausteine vollständig ausnutzen, steht man vor einer neuen Herausforderung: Wie lassen sich Daten im nicht-flüchtigen Hauptspeicher wiederfinden, wenn ein System abgestürzt ist und neu startet.

Aufgabenbeschreibung

Im Rahmen dieser Bachelorarbeit soll eine Speicherallokation für nicht-flüchtigen Speicher entwickelt werden. Als Basis soll eine etablierte Implementierung eines Speicherallokators für gewöhnlichen Hauptspeicher genutzt und an die neuen Bedürfnisse angepasst werden. Hierfür soll zunächst untersucht werden welche Implementierung sich für eine Anpassung am besten eignet. Für weiterführende Arbeiten sind C++ basierte Implementierungen zu bevorzugen. Anschließend soll die gewählte Implementierung erweitert werden, so dass gespeicherte Daten bei einem Neustart wiedergefunden werden können.

Die korrekte Funktionsweise sowie die Leistung der Implementierung soll dann evaluiert werden. Hierfür können spezielle Minimalprogramme, sogenannte Microbenchmarks, gebaut aber auch komplexe Endanwendungen für die Verwendung des neuen Speicherallokators portiert werden.

Ziel der Arbeit ist es, einen Speicherallokator bereitzustellen, der sich ähnlich zur malloc()-Funktion aus der Sprache C verhält, jedoch persistenten Speicher verwendet und die allokierten Daten auch nach einem Absturz wiederfindet.


aktualisiert am 15.10.2014, 11:44 von Arthur Martens
printemailtop