Void Echo和三個Liang @ Shandong University,軟件工程學院使該項目成為可能。
該項目是一個簡單的操作系統,它基於Andrew S. Tanenbaum的《 Nachos:不是另一個完全啟發式操作系統》一書。
所有代碼都屬於CC0 1.0通用(CC0 1.0)公共領域的奉獻精神。
在運行代碼之前,請確保您已經完成了以下>步驟:
- 使用一個Linux系統,並安裝GCC和G ++編譯器
- 可以完全訪問系統的根目錄
- 安裝了GCC-MIPS跨編譯器。
首先,運行git克隆命令。
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-Project然後,您可以製作OS的一個或多個組件。
在玉米片中,有許多組件,您可以通過增強一個或多個組件來增強操作系統。
請注意,您不應該直接更改./code/machine,./code/thread,./code/monitor目錄,因為它們是OS的核心。
如果這樣做,則操作系統也可以工作,但不建議使用這種增強風格。
對於每個實驗室,都有一個readme.md文件,其中包含實驗室的描述。開始啟動之前,請閱讀readme.md文件。
當您決定更改./code/machine,./code/thread或./code/monitor中的代碼時,您應該首先將文件複製到實驗室目錄,然後在此處更改代碼。
在每個實驗室的目錄下,都有makefile和makefile.Local.Local文件。通常,您無需更改makefile文件,但是您可能需要更改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_LOCAL請注意,NACHOS無法在Windows上正確運行(至少目前),並且如果修改Windows上的代碼,只需確保可以在Linux上編譯代碼。
如果在Linux上開發,請在提交代碼之前,請先運行make clean以清潔對象文件和可執行文件。將二進製文件用於Github並不是一個好主意。
您可能還會注意到,有一些名為
placeholder的文件,這些文件都是空文件。這些文件用於確保目錄結構正確。 git不能提交空的目錄,因此我們使用這些佔位持有人迫使git記住結構。
如果使用Windows,則可以使用Visual Studio代碼編寫代碼,並使用VMware共享文件夾在Windows和Linux之間共享代碼。
這是一個很好的做法,因為您可以使用強大的IDE編寫代碼,並使用Linux運行代碼。沒有放慢速度,沒有錯誤,沒有延遲,沒有問題。
但是有一些局限性:您不能使用符號鏈接,但是不用擔心,我已經通過編輯Makefile.common文件並添加了一些shell腳本來解決此問題。
您現在可以在Windows上開發,並在Linux上運行,而無需更改
Makefile或運行任何Shell腳本。但是,如果要啟用共享文件夾,則可能必須配置自己的VMWare Settings以啟用此功能。很可能您可能無法啟用此功能,但是不用擔心,您可能會從此鏈接中找到解決方案。
順便說一句,如果您發現一些零件太難開發,可以隨意與我聯繫,我將盡力提供幫助,或者我們可以交換負責任的項目部分。
發展和享受!