Este proyecto es posible por Void Echo y tres Liang @ Shandong University, Escuela de Ingeniería de Software.
El proyecto es un sistema operativo simple, que se basa en el libro "Nachos: no otro sistema operativo completamente heurístico" de Andrew S. Tanenbaum.
Todo el código está bajo la dedicación del dominio público CC0 1.0 Universal (CC0 1.0).
Antes de ejecutar el código, asegúrese de haber logrado los siguientes> pasos:
- Uso de un sistema Linux e instale el compilador GCC y G ++
- tener acceso completo al directorio raíz del sistema
- Instaló el compilador cruzado GCC-MIPS.
Primero, ejecute el comando Git Clone.
git clone https://github.com/void-echo/SDU-OS-Project
cd ./SDU-OS-ProjectEntonces puede hacer uno o más componentes del sistema operativo.
En los nachos, hay muchos componentes, y puede mejorar el sistema operativo mejorando uno o más componentes.
Tenga en cuenta que no debe cambiar el ./code/machine, ./code/thread, ./code/monitor Directorios directamente, porque son el núcleo del sistema operativo.
Si lo hace, el sistema operativo también puede funcionar, pero no se recomienda este estilo de mejora.
Para cada laboratorio, hay un archivo ReadMe.md, que contiene la descripción del laboratorio. Lea el archivo ReadMe.md antes de comenzar.
Cuando decide cambiar el código en ./code/machine, ./code/thread o ./code/monitor, primero debe copiar el archivo que se cambiará al directorio de laboratorio y luego cambiar el código allí.
Bajo el directorio de cada laboratorio, hay archivos MakeFile y MakeFile.local. Por lo general, no necesita cambiar el archivo MakeFile, pero es posible que deba cambiar el archivo makefile.local. Para asegurarse de que sus cambios puedan ser compilados.
El makefile.local de cada laboratorio es diferente, y deberían ser así:
# 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_LOCALTenga en cuenta que los nachos no pueden ejecutarse correctamente en Windows (al menos por ahora), y si modifica el código en Windows, solo asegúrese de que el código pueda compilarse en Linux.
Si se desarrolla en Linux, antes de confirmar su código, ejecute make clean primero para limpiar los archivos de objetos y los archivos ejecutables. No es una buena idea cometer binarios a Github.
También puede notar que hay algunos archivos llamados
placeholder, que son todos archivos vacíos. Estos archivos se utilizan para asegurarse de que la estructura del directorio sea correcta. Git no puede cometer directorios vacíos, por lo que usamos a este marcador de posición para obligar a GIT a recordar la estructura.
Si está utilizando Windows, puede usar el código Visual Studio para escribir el código y usar las carpetas de VMware compartidas para compartir el código entre Windows y Linux.
Esta es una buena práctica, porque puede usar el poderoso IDE para escribir el código y usar Linux para ejecutar el código. Sin desacelerar , sin errores, sin demora, sin problema.
Pero hay algunas limitaciones: no puede usar enlaces simbólicos, pero no se preocupe, ya había resuelto este problema editando el archivo Makefile.common y agregando algunos scripts de shell.
Ahora puede desarrollarse en Windows y ejecutar en Linux sin necesidad de cambiar el
Makefileo ejecutar cualquier scripts de shell. Pero, si desea habilitar carpetas compartidas, es posible que deba configurar su propiaVMWare Settingspara habilitar esta función. Lo más probable es que pueda no habilitar esta función, pero no se preocupe, puede encontrar una solución de este enlace.
Por cierto, si encuentra algunas piezas demasiado difíciles de desarrollar, no dude en contactarme, haré todo lo posible para proporcionar ayuda o podemos intercambiar las piezas responsables del proyecto.
¡Desarrolle y disfruta!