Lab 02: Free List
Last updated
Last updated
Nutzen Sie wenn möglich .
Sie können gcc unter Linux und/oder macOS direkt nutzen. Unter Linux installieren Sie gcc über Ihren Paket-Manager, unter macOX über .
Nutzen Sie Windows 10 können Sie entweder eine Linux in einer virtuellen Maschine (z.B. in ) nutzen, oder direkt das nutzen.
In der Wahl des Linux Systems sind sie frei, alle Beispiele in der Vorlesung werden unter Ubuntu (letzter stabiler Release) vorgestellt.
Die Funktion position()
liefert den die erste Position an der die geforderte Größe eingefügt werden kann. Wird keine passender Speicherblock gefunden liefert die Funktion den Rückgabewert -1.
Jedes Mal wenn ein Speicherbereich mit der Funktion insert()
"reserviert" wird, schreiben Sie entsprechende Daten in Ihre Datenstruktur. Wird Speicher mittels der Funktion freemem()
freigegeben, werden die Daten gelöscht.
Die Funktion print_freelist()
gibt den aktuellen Zustand Ihrer Free List auf der Konsole (stdout) aus. Implementieren Sie entsprechende Ausgaben auf der Konsole, so das der jeweilige Status der Free List erkennbar ist. Orientieren Sie sich hierbei an der Darstellung der Free List aus der Vorlesung.
Ihr Programm wird mind. 100 Iterationen durchlaufen.
Hinweis: Ihre Datei(en) dĂĽrfen keine main()
-Methode enthalten. Sollten Sie dennoch eine main()
-Methode erstellen wollen, tun Sie dies bitte nur in einer Datei main.c.
Implementieren Sie eine einfache Datenstruktur, die Ihren Hauptspeicher repräsentiert. Ihr Hauptspeicher hat eine Größe von 1000.
Implementieren Sie eine Datenstruktur Free List, die jeweils die Position und die Größe freier Datenblöcke repräsentiert.
Auf Basis Ihres Codes wird ein Zufallsgenerator gestartet, der willkürlich Speicherblöcke anfordert und wieder freigibt. Bei jeder Änderung ist die Linked List zu aktualisieren, so dass darin alle freien Speicherbereiche enthalten sind.
Nutzen Sie eine Header-Datei (freelist.h
) der Form:
Die Bewertung Ihrer Abgabe findet automatisch statt. Stellen Sie hierzu folgende Punkte sicher:
Ihre Lösung befindet sich im Ordner aufgabe2.
Ihre Implementierung befindet sich in einer Datei mit dem Namen freelist.c.
Sie nutzen eine Header-Datei in der die obigen Prototypen verwendet werden.
Ihre Lösung checken Sie in Ihrem Repository ein.
Die Bewertung Ihrer Aufgabe findet anhand einer Reihe von Tests statt.
Ihr Implementierung wird einer Reihe von Tests unterzogen, die Ihre Implementierung auf Korrektheit ĂĽberprĂĽfen.
Abgaben, die nicht vollständig sind oder die Abgabekriterien nicht erfüllen, werden nicht bewertet.
Abgaben, die nicht fristgerecht eingereicht werden, werden nicht bewertet.
Nutzen Sie zur Abgabe ausschließlich die beschriebene Möglichkeit. Abgaben, die per E-Mail oder anderen Wegen eingereicht werden, werden nicht bewertet.
Abgaben, die aufgrund eines Fehlers nicht durch die Tests laufen werden entsprechend mit weniger Punkten bewertet.
Zur Abgabe erhalten Sie einen Zugang zum hochschulinternen .