Dieses Projekt wird durch Void Echo und drei Liang @ Shandong University, School of Software Engineering, ermöglicht.
Das Projekt ist ein einfaches Betriebssystem, das auf dem Buch "Nachos: Nicht ein weiteres vollständig heuristisches Betriebssystem" von Andrew S. Tanenbaum basiert.
Der gesamte Code unterliegt dem CC0 1.0 Universal (CC0 1.0) Public -Domain -Widmung.
Bevor Sie den Code ausführen, stellen Sie bitte sicher, dass Sie die folgenden> Schritte ausführen:
- Verwenden Sie ein Linux -System und installieren Sie den GCC- und G ++ - Compiler
- haben vollen Zugriff auf das Stammverzeichnis des Systems
- Installierte die GCC-MIPS Cross-Compiler.
Führen Sie zuerst den Befehl git clone aus.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-ProjectDann können Sie eine oder mehrere Komponenten des Betriebssystems erstellen.
In Nachos gibt es viele Komponenten, und Sie können das Betriebssystem verbessern, indem Sie eine oder mehrere Komponenten verbessern.
Beachten Sie, dass Sie die Verzeichnisse.
Wenn Sie dies tun, kann das Betriebssystem auch funktionieren, aber dieser Verbesserungsstil wird nicht empfohlen.
Für jedes Labor gibt es eine Readme.md -Datei, die die Beschreibung des Labors enthält. Bitte lesen Sie die Datei readme.md, bevor Sie anfangen.
Wenn Sie sich entscheiden, den Code in ./Code/machine, ./code/thread oder ./Code/Monitor zu ändern, sollten Sie zunächst die Datei in das LAB -Verzeichnis kopieren und den Code dort ändern.
Im Verzeichnis jedes Labors gibt es Makefile und Makefile.local -Dateien. Normalerweise müssen Sie die Makefile -Datei nicht ändern, aber möglicherweise müssen Sie die makefile.local -Datei ändern. Um sicherzustellen, dass Ihre Änderungen zusammengestellt werden können.
Das Makefile.local jedes Labors ist anders und sollte wie folgt sein:
# Makefile.local for lab 2
ifndef MAKEFILE_THREADS_LOCAL
define MAKEFILE_THREADS_LOCAL
yes
endef
SFILES = switch $( HOST_LINUX ) .s
# If you add new files, you need to add them to CCFILES,
# you can define CFILES if you choose to make .c files instead.
CCFILES = main.cc
list.cc
scheduler.cc
synch.cc
synchlist.cc
system.cc
thread.cc
utility.cc
threadtest.cc
synchtest.cc
interrupt.cc
sysdep.cc
stats.cc
timer.cc
INCPATH += -I- -I../lab2 -I../threads -I../machine # find in ./ directory, if not found, find in ../threads, etc. Usually, this line is the only line you need to change.
DEFINES += -DTHREADS # This line defines the macro THREADS, which is equal to `#define THREADS`. `DEFINES` is a special variable in Makefile.
endif # MAKEFILE_THREADS_LOCALBeachten Sie, dass Nachos nicht korrekt unter Windows ausführen kann (zumindest vorerst). Wenn Sie den Code unter Windows ändern, stellen Sie einfach sicher, dass der Code unter Linux kompiliert werden kann.
Wenn Sie sich unter Linux entwickeln, bevor Sie Ihren Code begehen, können Sie bitte zuerst make clean um die Objektdateien und ausführbaren Dateien zu reinigen. Es ist keine gute Idee, Binärdateien für Github zu verpflichten.
Sie können auch feststellen, dass einige Dateien mit dem Namen
placeholder, bei denen es sich um leere Dateien handelt. Diese Dateien werden verwendet, um sicherzustellen, dass die Verzeichnisstruktur korrekt ist. Git kann keine leeren Verzeichnisse begehen, daher verwenden wir diese Platzhalter, um Git zu zwingen, sich an die Struktur zu erinnern.
Wenn Sie Windows verwenden, können Sie den Visual Studio -Code zum Schreiben des Codes verwenden und den Code mit VMware Shared -Ordnern zwischen Windows und Linux freigeben.
Dies ist eine gute Praxis, da Sie mit der leistungsstarken IDE den Code schreiben und Linux verwenden können, um den Code auszuführen. Keine Verlangsamung , keine Fehler, keine Verzögerung, kein Problem.
Es gibt jedoch einige Einschränkungen: Sie können keine symbolischen Links verwenden, aber keine Sorge, ich hatte dieses Problem bereits gelöst, indem ich die Datei Makefile.common -Datei bearbeitet und einige Shell -Skripte hinzugefügt hat.
Sie können sich jetzt unter Windows entwickeln und unter Linux ausführen, ohne die
Makefilezu ändern oder Shell -Skripte auszuführen. Wenn Sie jedoch freigegebene Ordner aktivieren möchten, müssen Sie möglicherweise Ihre eigenenVMWare Settingskonfigurieren, um diese Funktion zu aktivieren. Die Chancen stehen gut, dass Sie diese Funktion möglicherweise nicht aktivieren, aber keine Sorge, Sie finden möglicherweise eine Lösung aus diesem Link.
Wenn Sie übrigens einige Teile finden, die zu schwierig zu entwickeln sind, können Sie sich gerne mit mir in Verbindung setzen, und ich werde mein Bestes geben, um Hilfe zu leisten, oder wir können unsere verantwortlichen Projektteile austauschen.
Sich entwickeln und genießen!