Ce projet est rendu possible par Void Echo et Three Liang @ Shandong University, School of Software Engineering.
Le projet est un simple système d'exploitation, qui est basé sur le livre "Nachos: pas un autre système d'exploitation complètement heuristique" par Andrew S. Tanenbaum.
Tout le code est sous la dédicace du domaine public CC0 1.0 Universal (CC0 1.0).
Avant d'exécuter le code, assurez-vous d'avoir accompli les étapes suivantes: les étapes:
- à l'aide d'un système Linux et installez le compilateur GCC et G ++
- avoir un accès complet au répertoire racine du système
- Installé le compilateur croisé GCC-MIPS.
Tout d'abord, exécutez la commande Git Clone.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-ProjectEnsuite, vous pouvez faire un ou plusieurs composants du système d'exploitation.
Dans Nachos, il existe de nombreux composants et vous pouvez améliorer le système d'exploitation en améliorant un ou plusieurs composants.
Notez que vous ne devez pas modifier directement les répertoires ./code/machine, ./code/thread, ./code/monitor les répertoires, car ils sont le noyau du système d'exploitation.
Si vous le faites, le système d'exploitation peut également fonctionner, mais ce style d'amélioration n'est pas recommandé.
Pour chaque laboratoire, il existe un fichier readme.md, qui contient la description du laboratoire. Veuillez lire le fichier readme.md avant de commencer.
Lorsque vous décidez de modifier le code dans ./code/machine, ./code/thread ou ./code/monitor, vous devez d'abord copier le fichier pour être modifié en répertoire de laboratoire, puis modifier le code.
Dans le cadre du répertoire de chaque laboratoire, il existe des fichiers MakeFile et MakeFile.Local. Habituellement, vous n'avez pas besoin de modifier le fichier MakeFile, mais vous devrez peut-être modifier le fichier makefile.local. Pour vous assurer que vos modifications peuvent être compilées.
Le makefile.local de chaque laboratoire est différent, et ils devraient être comme ceci:
# 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_LOCALNotez que les nachos ne peuvent pas s'exécuter correctement sur Windows (du moins pour l'instant), et si vous modifiez le code sur Windows, assurez-vous simplement que le code peut être compilé sur Linux.
Si vous vous développez sur Linux, avant de commettre votre code, veuillez exécuter make clean First pour nettoyer les fichiers d'objet et les fichiers exécutables. Ce n'est pas une bonne idée de commettre des binaires à Github.
Vous pouvez également remarquer qu'il existe certains fichiers nommés
placeholder, qui sont tous des fichiers vides. Ces fichiers sont utilisés pour s'assurer que la structure du répertoire est correcte. Git ne peut pas commettre des répertoires vides, nous utilisons donc ces espaces réservés pour forcer Git à se souvenir de la structure.
Si vous utilisez Windows, vous pouvez utiliser le code Visual Studio pour écrire le code et utiliser des dossiers partagés VMware pour partager le code entre Windows et Linux.
C'est une bonne pratique, car vous pouvez utiliser l'IDE puissant pour écrire le code et utiliser Linux pour exécuter le code. Pas de ralentissement , pas de bugs, pas de retard, pas de problème.
Mais il y a certaines limites: vous ne pouvez pas utiliser de liens symboliques, mais ne vous inquiétez pas, j'avais déjà résolu ce problème en modifiant le fichier Makefile.common et en ajoutant des scripts de shell.
Vous pouvez maintenant vous développer sous Windows et exécuter sur Linux sans avoir besoin de modifier le
Makefileou d'exécuter des scripts de shell. Mais, si vous souhaitez activer les dossiers partagés, vous devrez peut-être configurer vos propresVMWare Settingspour activer cette fonctionnalité. Il y a de fortes chances que vous puissiez ne pas activer cette fonctionnalité, mais ne vous inquiétez pas, vous pouvez trouver une solution à partir de ce lien.
Soit dit en passant, si vous trouvez des pièces trop difficiles à développer, n'hésitez pas à me contacter, je ferai de mon mieux pour fournir de l'aide, ou nous pouvons échanger nos pièces de projet responsables.
Développez et profitez!