Dieses Projekt ist eine Implementierung eines dynamischen Speichers. Es soll zeigen wie ein dynamischer Speicher in seinen grundzügen funktioniert.
Der Code wird als Visual Studio Projekt bereit gestellt. Eine version von Visual Studio 2013 oder höher wird unterstützt. Um es in die Entwicklungsumgebung einzupflegen muss nur die memory.suo
Datei in Visual Studio geöffnet werden. Die Datei main.c
ist dabei der einstiegspunkt in das Programm. Die eigentliche Logik des Programms befindet sich in core.c
. Fertig erstellte .exe
zum ausführen finden sich unter dem DEBUG bzw RELEASE Ordner. Getestet auf Windows 10.
core.c
Eigentlicher ablauf des Programmsmemory.c
Allokieren, Freigeben von Speicher kompaktierungprocess_queue.c
Wartende Prozesselog.c
Log ausgaben des Programmsloader.c
Laden der Prozessebs_types.h
Typen des das Betriebssystemglobals.h
Globale Variablen
Um das programm von Visual Studio aus zu starten, müssen sich alle .h
dateien und .c
dateien im selben Ordner befinden. Zusätzlich sollte sich eine Processes.txt
im selben Ordner wie die der Source-Dateien enthalten sein. Diese muss wie folgt gegliedert werden, hierzu ein Beispiel.
#OwnerId start duration size type
00 00 1000 100 os
01 00 900 300 batch
02 00 300 150 background
03 00 800 300 interactive
04 100 400 200 foreground
Die unterstützen Prozessarten stehen hierfür in der bs_types.h
als ProcessType_t
. Leerzeichen müssen zwischen den einzelnen werten stehen. Um das Programm mit einer .exe
zu öffnen, muss es von einer Kommandozeile geöffnet werden und eine Processes.txt
sich im gleichen Ordner befinden oder ein Fester Pfad wird angegeben. Das Programm schreibt in den Standardoutput es kann also bei Bedarf umgelenkt werden. Um es von der Kommandozeile zu öffnen:
C:\Ordner\der\ memory.exe Pfad\zur\Processes.txt