Этот проект стал возможным благодаря void echo и трем университетам Liang @ Shandong, Школе программного обеспечения.
Проект представляет собой простую ОС, которая основана на книге «Начос: не другая полностью эвристическая операционная система» Эндрю С. Таненбаума.
Весь код находится под универсальной посвящением общественного достояния 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Затем вы можете сделать один или несколько компонентов ОС.
В Начос есть много компонентов, и вы можете улучшить ОС, улучшив один или несколько компонентов.
Обратите внимание, что не следует изменять каталоги ./code/machine, ./code/thread, ./code/monitor напрямую, потому что они являются ядром ОС.
Если вы это сделаете, ОС также может работать, но этот стиль улучшения не рекомендуется.
Для каждой лаборатории есть файл readme.md, который содержит описание лаборатории. Пожалуйста, прочитайте файл readme.md до начала работы.
Когда вы решите изменить код в ./code/machine, ./code/thread или ./code/monitor, сначала следует скопировать файл, который будет изменен на лабораторный каталог, а затем изменить код там.
В каталоге каждой лаборатории есть Makefile и Makefile.local файлы. Обычно вам не нужно менять файл MakeFile, но вам может потребоваться изменять файл makefile.local. Чтобы убедиться, что ваши изменения могут быть скомпилированы.
Makefile.local of Cay Lab отличается, и они должны быть такими:
# 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 и добавив несколько сценариев оболочки.
Теперь вы можете разработать в Windows и запустить на Linux без необходимости изменить
Makefileили запустить какие -либо сценарии оболочки. Но если вы хотите включить общие папки, вам, возможно, придется настроить собственныеVMWare Settings, чтобы включить эту функцию. Скорее всего, вы можете не включить эту функцию, но не волнуйтесь, вы можете найти решение по этой ссылке.
Кстати, если вы найдете некоторые детали слишком сложными для разработки, не стесняйтесь обращаться ко мне, я буду стараться изо всех сил, чтобы оказать помощь, или мы сможем обменять наши ответственные части проекта.
Развивайте и наслаждайтесь!