このプロジェクトは、Void Echoと3つのLiang @ Shandong Universityのソフトウェア工学部によって可能になりました。
このプロジェクトは、Andrew S. Tanenbaumによる「Nachos:Not Anoth Not Not Not Not Not Not Ather Heuristic Operating System」に基づいたシンプルなOSです。
すべてのコードは、CC0 1.0ユニバーサル(CC0 1.0)パブリックドメインの献身の下にあります。
コードを実行する前に、次の手順を達成したことを確認してください。
- 1つのLinuxシステムを使用して、GCCおよびG ++コンパイラをインストールします
- システムのルートディレクトリに完全にアクセスできる
- GCC-MIPSクロスコンパイラをインストールしました。
まず、git cloneコマンドを実行します。
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-Projectその後、OSの1つ以上のコンポーネントを作成できます。
ナチョスには多くのコンポーネントがあり、1つ以上のコンポーネントを強化することでOSを強化できます。
OSの中核であるため、./code/machine、./code/thread、./code/monitor Directoriesを直接変更しないでください。
もしそうなら、OSも機能しますが、この強化スタイルは推奨されません。
各ラボには、ラボの説明を含むreadme.mdファイルがあります。開始する前に、readme.mdファイルをお読みください。
./code/machine、./code/threadまたは./code/monitorでコードを変更する場合は、まずファイルをコピーしてラボディレクトリに変更してから、コードを変更する必要があります。
各ラボのディレクトリには、makefileとmakefile.localファイルがあります。通常、makefileファイルを変更する必要はありませんが、makefile.localファイルを変更する必要がある場合があります。変更をコンパイルできることを確認してください。
各ラボのmakefile.localは異なり、次のようにする必要があります。
# 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_LOCALNachosはWindowsで正しく実行できないことに注意してください(少なくとも今のところ)。Windowsでコードを変更する場合は、Linuxでコードをコンパイルできることを確認してください。
Linuxで開発する場合は、コードをコミットする前に、最初にmake cleanにして、オブジェクトファイルと実行可能ファイルをクリーニングしてください。 Githubにバイナリをコミットすることは良い考えではありません。
また、
placeholderという名前のファイルがあることに気付くかもしれません。これらはすべて空のファイルです。これらのファイルは、ディレクトリ構造が正しいことを確認するために使用されます。 GITは空のディレクトリをコミットできないため、これらのプレースホルダーを使用してGITに構造を覚えてもらいます。
Windowsを使用している場合は、Visual Studioコードを使用してコードを書き込み、VMware共有フォルダーを使用してWindowsとLinuxの間でコードを共有できます。
これは、強力なIDEを使用してコードを作成し、Linuxを使用してコードを実行できるため、これは良い習慣です。スローダウン、バグ、遅延、問題はありません。
しかし、いくつかの制限があります。シンボリックリンクを使用することはできませんが、心配しないでくださいMakefile.commonファイルを編集してシェルスクリプトを追加することで、この問題をすでに解決していました。
これで、Windowsで開発し、
Makefile変更したり、シェルスクリプトを実行したりすることなくLinuxで実行できます。ただし、共有フォルダーを有効にする場合は、この機能を有効にするために独自のVMWare Settingsを構成する必要がある場合があります。この機能を有効にすることができない可能性がありますが、心配しないでください。このリンクから解決策が見つかる可能性があります。
ちなみに、開発が難しすぎる部分がある場合は、お気軽に連絡してください。助けを提供するために最善を尽くします。責任あるプロジェクトの部分を交換できます。
開発して楽しんでください!