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以启用此功能。很可能您可能无法启用此功能,但是不用担心,您可能会从此链接中找到解决方案。
顺便说一句,如果您发现一些零件太难开发,可以随意与我联系,我将尽力提供帮助,或者我们可以交换负责任的项目部分。
发展和享受!